More fixes related to review feedback

More fixes related to review feedback:
1) Added yargs to package.json, reran npm update (also updates
package-lock.json)
2) Added global variables for downloads_dir / dist_dir, which holds the
absolute path for argv.downloads_dir / argv.dist_dir after a call to
path.resolve(). Switched the code to use them.
3) Fixed hardcoding of "dist/" and "download/" in the zipInputData step.

Tested with:
$ node --max-old-space-size=8192 index.js \
    --downloads_dir=mydownloads \
    --dist_dir=mydist \
    --included_zones America/New_York America/Chicago
diff --git a/index.js b/index.js
index 3425eb5..775ccb6 100644
--- a/index.js
+++ b/index.js
@@ -12,6 +12,7 @@
 var rimraf = require('rimraf')
 var overpass = require('query-overpass')
 var yargs = require('yargs')
+var path = require('path')
 
 const ProgressStats = require('./progressStats')
 
@@ -55,6 +56,10 @@
   .alias('help', 'h')
   .argv
 
+// Resolve the arguments with paths so relative paths become absolute.
+let downloads_dir = path.resolve(argv.downloads_dir)
+let dist_dir = path.resolve(argv.dist_dir)
+
 // allow building of only a specified zones
 let includedZones = []
 let excludedZones = []
@@ -202,7 +207,7 @@
   } else {
     query += 'relation'
   }
-  var boundaryFilename = argv.downloads_dir + '/' + boundaryId + '.json'
+  var boundaryFilename = downloads_dir + '/' + boundaryId + '.json'
   var debug = 'getting data for ' + boundaryId
   var queryKeys = Object.keys(cfg)
 
@@ -310,7 +315,7 @@
 }
 
 var getTzDistFilename = function (tzid) {
-  return argv.dist_dir + '/' + tzid.replace(/\//g, '__') + '.json'
+  return dist_dir + '/' + tzid.replace(/\//g, '__') + '.json'
 }
 
 /**
@@ -325,7 +330,7 @@
 var getDataSource = function (source) {
   var geoJson
   if (source.source === 'overpass') {
-    geoJson = require(argv.downloads_dir + '/' + source.id + '.json')
+    geoJson = require(downloads_dir + '/' + source.id + '.json')
   } else if (source.source === 'manual-polygon') {
     geoJson = polygon(source.data).geometry
   } else if (source.source === 'manual-multipolygon') {
@@ -665,8 +670,8 @@
 }
 
 var combineAndWriteZones = function (callback) {
-  var stream = fs.createWriteStream(argv.dist_dir + '/combined.json')
-  var streamWithOceans = fs.createWriteStream(argv.dist_dir + '/combined-with-oceans.json')
+  var stream = fs.createWriteStream(dist_dir + '/combined.json')
+  var streamWithOceans = fs.createWriteStream(dist_dir + '/combined-with-oceans.json')
   var zones = Object.keys(zoneCfg)
 
   stream.write('{"type":"FeatureCollection","features":[')
@@ -708,11 +713,11 @@
 const autoScript = {
   makeDownloadsDir: function (cb) {
     overallProgress.beginTask('Creating downloads dir')
-    safeMkdir(argv.downloads_dir, cb)
+    safeMkdir(downloads_dir, cb)
   },
   makeDistDir: function (cb) {
     overallProgress.beginTask('Creating dist dir')
-    safeMkdir(argv.dist_dir, cb)
+    safeMkdir(dist_dir, cb)
   },
   getOsmBoundaries: ['makeDownloadsDir', function (results, cb) {
     overallProgress.beginTask('Downloading osm boundaries')
@@ -720,7 +725,8 @@
   }],
   zipInputData: ['makeDistDir', 'getOsmBoundaries', function (results, cb) {
     overallProgress.beginTask('Zipping up input data')
-    exec('zip dist/input-data.zip downloads/* timezones.json osmBoundarySources.json expectedZoneOverlaps.json', cb)
+    exec('zip ' + dist_dir + '/input-data.zip ' + downloads_dir
+         + '/* timezones.json osmBoundarySources.json expectedZoneOverlaps.json', cb)
   }],
   createZones: ['makeDistDir', 'getOsmBoundaries', function (results, cb) {
     overallProgress.beginTask('Creating timezone boundaries')
@@ -750,8 +756,8 @@
       return cb()
     }
     overallProgress.beginTask('Zipping geojson')
-    let zipFile = argv.dist_dir + '/timezones.geojson.zip'
-    let jsonFile = argv.dist_dir + '/combined.json'
+    let zipFile = dist_dir + '/timezones.geojson.zip'
+    let jsonFile = dist_dir + '/combined.json'
     exec('zip ' + zipFile + ' ' + jsonFile, cb)
   }],
   zipGeoJsonWithOceans: ['mergeZones', function (results, cb) {
@@ -760,8 +766,8 @@
       return cb()
     }
     overallProgress.beginTask('Zipping geojson with oceans')
-    let zipFile = argv.dist_dir + '/timezones-with-oceans.geojson.zip'
-    let jsonFile = argv.dist_dir + '/combined-with-oceans.json'
+    let zipFile = dist_dir + '/timezones-with-oceans.geojson.zip'
+    let jsonFile = dist_dir + '/combined-with-oceans.json'
     exec('zip ' + zipFile + ' ' + jsonFile, cb)
   }],
   makeShapefile: ['mergeZones', function (results, cb) {
@@ -770,15 +776,15 @@
       return cb()
     }
     overallProgress.beginTask('Converting from geojson to shapefile')
-    let shapeFileGlob = argv.dist_dir + '/combined-shapefile.*'
+    let shapeFileGlob = dist_dir + '/combined-shapefile.*'
     rimraf.sync(shapeFileGlob)
-    let shapeFile = argv.dist_dir + '/combined-shapefile.shp'
-    let jsonFile = argv.dist_dir + '/combined.json'
+    let shapeFile = dist_dir + '/combined-shapefile.shp'
+    let jsonFile = dist_dir + '/combined.json'
     exec(
       'ogr2ogr -f "ESRI Shapefile" ' + shapeFile + ' ' + jsonFile,
       function (err, stdout, stderr) {
         if (err) { return cb(err) }
-        let shapeFileZip = argv.dist_dir + '/timezones.shapefile.zip'
+        let shapeFileZip = dist_dir + '/timezones.shapefile.zip'
         exec('zip ' + shapeFileZip + ' ' + shapeFileGlob, cb)
       }
     )
@@ -789,15 +795,15 @@
       return cb()
     }
     overallProgress.beginTask('Converting from geojson with oceans to shapefile')
-    let shapeFileGlob = argv.dist_dir + '/combined-shapefile-with-oceans.*'
+    let shapeFileGlob = dist_dir + '/combined-shapefile-with-oceans.*'
     rimraf.sync(shapeFileGlob)
-    let shapeFile = argv.dist_dir + '/combined-shapefile-with-oceans.shp'
-    let jsonFile = argv.dist_dir + '/combined-with-oceans.json'
+    let shapeFile = dist_dir + '/combined-shapefile-with-oceans.shp'
+    let jsonFile = dist_dir + '/combined-with-oceans.json'
     exec(
       'ogr2ogr -f "ESRI Shapefile" ' + shapeFile + ' ' + jsonFile,
       function (err, stdout, stderr) {
         if (err) { return cb(err) }
-        let shapeFileZip = argv.dist_dir + '/timezones-with-oceans.shapefile.zip'
+        let shapeFileZip = dist_dir + '/timezones-with-oceans.shapefile.zip'
         exec('zip ' + shapeFileZip + ' ' + shapeFileGlob, cb)
       }
     )
@@ -815,7 +821,7 @@
       zoneNames = zoneNames.filter(zoneName => excludedZones.indexOf(zoneName) === -1)
     }
     fs.writeFile(
-      argv.dist_dir + '/timezone-names.json',
+      dist_dir + '/timezone-names.json',
       JSON.stringify(zoneNames),
       cb
     )