diff --git a/.travis.yml b/.travis.yml
index 976b6f9fe97ce26a6345a659e237aec7526d3123..4efd7f293bd64caa93868fa563e6e4fdb391b41b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,30 +9,27 @@ node_js:
 before_install:
   - if [[ `npm -v` != 4* ]]; then npm install -g npm@4; fi
   - "export TRAVIS_COMMIT_MSG=\"`git log --format=%B --no-merges -n 1`\""
-  - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true
-  - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export TWBS_DO_SAUCE=$?; true
-  - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then export TWBS_DO_VALIDATOR=0; fi
+  - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip browser\]'; export TWBS_DO_BROWSER=$?; true
 install:
   - bundle install --deployment --jobs=3 --retry=3
-  - cp grunt/npm-shrinkwrap.json ./
+  - cp build/npm-shrinkwrap.json ./
   - npm install
+script:
+  - npm test
+  - if [ "$TWBS_TEST" = browser -a "$SAUCE_ACCESS_KEY" ]; then npm run js-test-cloud; fi
 after_success:
-  - if [ "$TWBS_TEST" = sauce-js-unit ]; then grunt/upload-preview.sh; fi
+  - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then npm run docs-upload-preview; fi
 cache:
   directories:
     - node_modules
     - vendor/bundle
-    - "$HOME/google-cloud-sdk"
 env:
   - TWBS_TEST=core
-  - TWBS_TEST=validate-html
-  - TWBS_TEST=sauce-js-unit
+  - TWBS_TEST=browser
 matrix:
   exclude:
     - node_js: "4"
-      env: TWBS_TEST=validate-html
-    - node_js: "4"
-      env: TWBS_TEST=sauce-js-unit
+      env: TWBS_TEST=browser
 notifications:
   slack: heybb:iz4wwosL0N0EdaX1gvgkU0NH
   webhooks:
diff --git a/Gemfile b/Gemfile
index 958c7a9cbc1f2f882376a3b510728e626b411e9d..1a8977f8dbe2ef8c2e520b530dfa6a8af012b8b2 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,8 +1,8 @@
 source 'https://rubygems.org'
 
 group :development, :test do
-  gem 'jekyll', '~> 3.4.2'
+  gem 'jekyll', '~> 3.4.3'
   gem 'jekyll-redirect-from', '~> 0.12.1'
-  gem 'jekyll-sitemap', '~> 1.0.0'
-  gem 'scss_lint', '~> 0.52.0'
+  gem 'jekyll-sitemap', '~> 1.1.1'
+  gem 'scss_lint', '~> 0.53.0'
 end
diff --git a/Gemfile.lock b/Gemfile.lock
index 242ec495fea95215b8006f386e3b73bb4552c2c0..4df2612fcdb947ea7c3dd21f61e734ac5e8200ba 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,12 +1,12 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    addressable (2.5.0)
+    addressable (2.5.1)
       public_suffix (~> 2.0, >= 2.0.2)
     colorator (1.1.0)
     ffi (1.9.18)
     forwardable-extended (2.6.0)
-    jekyll (3.4.2)
+    jekyll (3.4.3)
       addressable (~> 2.4)
       colorator (~> 1.0)
       jekyll-sass-converter (~> 1.0)
@@ -21,7 +21,7 @@ GEM
       jekyll (~> 3.3)
     jekyll-sass-converter (1.5.0)
       sass (~> 3.4)
-    jekyll-sitemap (1.0.0)
+    jekyll-sitemap (1.1.1)
       jekyll (~> 3.3)
     jekyll-watch (1.5.0)
       listen (~> 3.0, < 3.1)
@@ -41,7 +41,7 @@ GEM
     rouge (1.11.1)
     safe_yaml (1.0.4)
     sass (3.4.23)
-    scss_lint (0.52.0)
+    scss_lint (0.53.0)
       rake (>= 0.9, < 13)
       sass (~> 3.4.20)
 
@@ -49,10 +49,10 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
-  jekyll (~> 3.4.2)
+  jekyll (~> 3.4.3)
   jekyll-redirect-from (~> 0.12.1)
-  jekyll-sitemap (~> 1.0.0)
-  scss_lint (~> 0.52.0)
+  jekyll-sitemap (~> 1.1.1)
+  scss_lint (~> 0.53.0)
 
 BUNDLED WITH
    1.14.6
diff --git a/Gruntfile.js b/Gruntfile.js
index 7675e2f174e5e7bd93db7e2bf224cb86e7fdfc7a..e3044bf04c38e381a076f6bd370687350b38a1f4 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -9,151 +9,8 @@
 module.exports = function (grunt) {
   'use strict'
 
-  // Force use of Unix newlines
-  grunt.util.linefeed = '\n'
-
-  RegExp.quote = function (string) {
-    return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&')
-  }
-
-  var isTravis = require('is-travis')
-
   // Project configuration.
   grunt.initConfig({
-
-    // Metadata.
-    pkg: grunt.file.readJSON('package.json'),
-    banner: '/*!\n' +
-            ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
-            ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
-            ' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' +
-            ' */\n',
-    jqueryCheck: 'if (typeof jQuery === \'undefined\') {\n' +
-                 '  throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\\'s JavaScript.\')\n' +
-                 '}\n',
-    jqueryVersionCheck: '+function ($) {\n' +
-                        '  var version = $.fn.jquery.split(\' \')[0].split(\'.\')\n' +
-                        '  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {\n' +
-                        '    throw new Error(\'Bootstrap\\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\')\n' +
-                        '  }\n' +
-                        '}(jQuery);\n\n',
-
-    // Task configuration.
-    clean: {
-      dist: 'dist',
-      docs: 'docs/dist'
-    },
-
-    // JS build configuration
-    babel: {
-      dev: {
-        options: {
-          sourceMap: true
-        },
-        files: {
-          'js/dist/util.js'      : 'js/src/util.js',
-          'js/dist/alert.js'     : 'js/src/alert.js',
-          'js/dist/button.js'    : 'js/src/button.js',
-          'js/dist/carousel.js'  : 'js/src/carousel.js',
-          'js/dist/collapse.js'  : 'js/src/collapse.js',
-          'js/dist/dropdown.js'  : 'js/src/dropdown.js',
-          'js/dist/modal.js'     : 'js/src/modal.js',
-          'js/dist/scrollspy.js' : 'js/src/scrollspy.js',
-          'js/dist/tab.js'       : 'js/src/tab.js',
-          'js/dist/tooltip.js'   : 'js/src/tooltip.js',
-          'js/dist/popover.js'   : 'js/src/popover.js'
-        }
-      },
-      dist: {
-        options: {
-          extends: '../../.babelrc'
-        },
-        files: {
-          '<%= concat.bootstrap.dest %>' : '<%= concat.bootstrap.dest %>'
-        }
-      }
-    },
-
-    stamp: {
-      options: {
-        banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>\n+function () {\n',
-        footer: '\n}();'
-      },
-      bootstrap: {
-        files: {
-          src: '<%= concat.bootstrap.dest %>'
-        }
-      }
-    },
-
-    concat: {
-      options: {
-        // Custom function to remove all export and import statements
-        process: function (src) {
-          return src.replace(/^(export|import).*/gm, '')
-        }
-      },
-      bootstrap: {
-        src: [
-          'js/src/util.js',
-          'js/src/alert.js',
-          'js/src/button.js',
-          'js/src/carousel.js',
-          'js/src/collapse.js',
-          'js/src/dropdown.js',
-          'js/src/modal.js',
-          'js/src/scrollspy.js',
-          'js/src/tab.js',
-          'js/src/tooltip.js',
-          'js/src/popover.js'
-        ],
-        dest: 'dist/js/<%= pkg.name %>.js'
-      }
-    },
-
-    qunit: {
-      options: {
-        inject: 'js/tests/unit/phantom.js'
-      },
-      files: 'js/tests/index.html'
-    },
-
-    // CSS build configuration
-    copy: {
-      docs: {
-        expand: true,
-        cwd: 'dist/',
-        src: [
-          '**/*'
-        ],
-        dest: 'docs/dist/'
-      }
-    },
-
-    connect: {
-      server: {
-        options: {
-          port: 3000,
-          base: '.'
-        }
-      }
-    },
-
-    watch: {
-      src: {
-        files: '<%= concat.bootstrap.src %>',
-        tasks: ['babel:dev']
-      },
-      sass: {
-        files: 'scss/**/*.scss',
-        tasks: ['dist-css', 'docs']
-      },
-      docs: {
-        files: 'docs/assets/scss/**/*.scss',
-        tasks: ['dist-css', 'docs']
-      }
-    },
-
     'saucelabs-qunit': {
       all: {
         options: {
@@ -162,160 +19,11 @@ module.exports = function (grunt) {
           maxRetries: 3,
           maxPollRetries: 4,
           urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
-          browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
-        }
-      }
-    },
-
-    exec: {
-      'clean-css': {
-        command: 'npm run clean-css'
-      },
-      'clean-css-docs': {
-        command: 'npm run clean-css-docs'
-      },
-      postcss: {
-        command: 'npm run postcss'
-      },
-      'postcss-docs': {
-        command: 'npm run postcss-docs'
-      },
-      htmlhint: {
-        command: 'npm run htmlhint'
-      },
-      htmllint: {
-        command: 'npm run htmllint'
-      },
-      jekyll: {
-        command: 'npm run jekyll'
-      },
-      'jekyll-github': {
-        command: 'npm run jekyll-github'
-      },
-      sass: {
-        command: 'npm run sass'
-      },
-      'sass-docs': {
-        command: 'npm run sass-docs'
-      },
-      'scss-lint': {
-        command: 'npm run scss-lint'
-      },
-      'scss-lint-docs': {
-        command: 'npm run scss-lint-docs'
-      },
-      uglify: {
-        command: 'npm run uglify'
-      },
-      'uglify-docs': {
-        command: 'npm run uglify-docs'
-      }
-    },
-
-    buildcontrol: {
-      options: {
-        dir: '_gh_pages',
-        commit: true,
-        push: true,
-        message: 'Built %sourceName% from commit %sourceCommit% on branch %sourceBranch%'
-      },
-      pages: {
-        options: {
-          remote: 'git@github.com:twbs/derpstrap.git',
-          branch: 'gh-pages'
+          browsers: grunt.file.readYAML('build/sauce_browsers.yml')
         }
       }
-    },
-
-    compress: {
-      main: {
-        options: {
-          archive: 'bootstrap-<%= pkg.version %>-dist.zip',
-          mode: 'zip',
-          level: 9,
-          pretty: true
-        },
-        files: [
-          {
-            expand: true,
-            cwd: 'dist/',
-            src: ['**'],
-            dest: 'bootstrap-<%= pkg.version %>-dist'
-          }
-        ]
-      }
     }
-
   })
 
-
-  // These plugins provide necessary tasks.
-  require('load-grunt-tasks')(grunt)
-  require('time-grunt')(grunt)
-
-  // Docs HTML validation task
-  grunt.registerTask('validate-html', ['exec:jekyll', 'exec:htmllint', 'exec:htmlhint'])
-
-  var runSubset = function (subset) {
-    return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset
-  }
-  var isUndefOrNonZero = function (val) {
-    return val === undefined || val !== '0'
-  }
-
-  // Test task.
-  var testSubtasks = []
-  // Skip core tests if running a different subset of the test suite
-  if (runSubset('core') &&
-    // Skip core tests if this is a Savage build
-    process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
-    testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'test-scss', 'qunit', 'docs'])
-  }
-  // Skip HTML validation if running a different subset of the test suite
-  if (runSubset('validate-html') &&
-      isTravis &&
-      // Skip HTML5 validator when [skip validator] is in the commit message
-      isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
-    testSubtasks.push('validate-html')
-  }
-  // Only run Sauce Labs tests if there's a Sauce access key
-  if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
-      // Skip Sauce if running a different subset of the test suite
-      runSubset('sauce-js-unit')) {
-    testSubtasks = testSubtasks.concat(['dist', 'docs-css', 'docs-js', 'clean:docs', 'copy:docs'])
-    // Skip Sauce on Travis when [skip sauce] is in the commit message
-    if (isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
-      testSubtasks.push('connect')
-      testSubtasks.push('saucelabs-qunit')
-    }
-  }
-  grunt.registerTask('test', testSubtasks)
-
-  // JS distribution task.
-  grunt.registerTask('dist-js', ['babel:dev', 'concat', 'babel:dist', 'stamp', 'exec:uglify'])
-
-  grunt.registerTask('test-scss', ['exec:scss-lint'])
-
-  // CSS distribution task.
-  grunt.registerTask('sass-compile', ['exec:sass', 'exec:sass-docs'])
-
-  grunt.registerTask('dist-css', ['sass-compile', 'exec:postcss', 'exec:clean-css', 'exec:clean-css-docs'])
-
-  // Full distribution task.
-  grunt.registerTask('dist', ['clean:dist', 'dist-css', 'dist-js'])
-
-  // Default task.
-  grunt.registerTask('default', ['clean:dist', 'test'])
-
-  // Docs task.
-  grunt.registerTask('docs-css', ['exec:clean-css-docs', 'exec:postcss-docs'])
-  grunt.registerTask('lint-docs-css', ['exec:scss-lint-docs'])
-  grunt.registerTask('docs-js', ['exec:uglify-docs'])
-  grunt.registerTask('docs', ['lint-docs-css', 'docs-css', 'docs-js', 'clean:docs', 'copy:docs'])
-  grunt.registerTask('docs-github', ['exec:jekyll-github'])
-
-  grunt.registerTask('prep-release', ['dist', 'docs', 'docs-github', 'compress'])
-
-  // Publish to GitHub
-  grunt.registerTask('publish', ['buildcontrol:pages'])
+  grunt.loadNpmTasks('grunt-saucelabs')
 }
diff --git a/grunt/change-version.js b/build/change-version.js
similarity index 100%
rename from grunt/change-version.js
rename to build/change-version.js
diff --git a/grunt/gcp-key.json.enc b/build/gcp-key.json.enc
similarity index 100%
rename from grunt/gcp-key.json.enc
rename to build/gcp-key.json.enc
diff --git a/grunt/npm-shrinkwrap.json b/build/npm-shrinkwrap.json
similarity index 72%
rename from grunt/npm-shrinkwrap.json
rename to build/npm-shrinkwrap.json
index f35e330d1ce2077b487799a4d55abe4af0d10759..347d92658f8a150fe94a448404a73cfec70ef893 100644
--- a/grunt/npm-shrinkwrap.json
+++ b/build/npm-shrinkwrap.json
@@ -8,16 +8,10 @@
       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
       "dev": true
     },
-    "accepts": {
-      "version": "1.3.3",
-      "from": "accepts@>=1.3.3 <1.4.0",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
-      "dev": true
-    },
     "acorn": {
-      "version": "4.0.4",
-      "from": "acorn@4.0.4",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz",
+      "version": "5.0.3",
+      "from": "acorn@>=5.0.1 <6.0.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz",
       "dev": true
     },
     "acorn-jsx": {
@@ -34,24 +28,10 @@
         }
       }
     },
-    "agent-base": {
-      "version": "2.0.1",
-      "from": "agent-base@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "semver": {
-          "version": "5.0.3",
-          "from": "semver@>=5.0.1 <5.1.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
-          "dev": true
-        }
-      }
-    },
     "ajv": {
-      "version": "4.11.5",
+      "version": "4.11.6",
       "from": "ajv@>=4.7.0 <5.0.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.5.tgz",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.6.tgz",
       "dev": true
     },
     "ajv-keywords": {
@@ -86,7 +66,7 @@
     },
     "any-promise": {
       "version": "1.3.0",
-      "from": "any-promise@>=1.0.0 <2.0.0",
+      "from": "any-promise@>=1.3.0 <2.0.0",
       "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
       "dev": true
     },
@@ -102,26 +82,6 @@
       "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz",
       "dev": true
     },
-    "archiver": {
-      "version": "1.3.0",
-      "from": "archiver@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "async": {
-          "version": "2.1.5",
-          "from": "async@>=2.0.0 <3.0.0",
-          "resolved": "https://registry.npmjs.org/async/-/async-2.1.5.tgz",
-          "dev": true
-        }
-      }
-    },
-    "archiver-utils": {
-      "version": "1.3.0",
-      "from": "archiver-utils@>=1.3.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
-      "dev": true
-    },
     "are-we-there-yet": {
       "version": "1.1.2",
       "from": "are-we-there-yet@>=1.1.2 <1.2.0",
@@ -141,15 +101,15 @@
       "dev": true
     },
     "arr-flatten": {
-      "version": "1.0.1",
+      "version": "1.0.2",
       "from": "arr-flatten@>=1.0.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.2.tgz",
       "dev": true
     },
-    "array-differ": {
-      "version": "1.0.0",
-      "from": "array-differ@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+    "array-filter": {
+      "version": "0.0.1",
+      "from": "array-filter@>=0.0.0 <0.1.0",
+      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
       "dev": true
     },
     "array-find-index": {
@@ -158,6 +118,18 @@
       "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
       "dev": true
     },
+    "array-map": {
+      "version": "0.0.0",
+      "from": "array-map@>=0.0.0 <0.1.0",
+      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+      "dev": true
+    },
+    "array-reduce": {
+      "version": "0.0.0",
+      "from": "array-reduce@>=0.0.0 <0.1.0",
+      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+      "dev": true
+    },
     "array-union": {
       "version": "1.0.2",
       "from": "array-union@>=1.0.1 <2.0.0",
@@ -201,9 +173,9 @@
       "dev": true
     },
     "async": {
-      "version": "1.5.2",
-      "from": "async@>=1.5.2 <1.6.0",
-      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+      "version": "1.4.2",
+      "from": "async@1.4.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz",
       "dev": true
     },
     "async-each": {
@@ -242,90 +214,236 @@
       "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
       "dev": true
     },
+    "babel-cli": {
+      "version": "6.24.1",
+      "from": "babel-cli@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz",
+      "dev": true
+    },
     "babel-code-frame": {
       "version": "6.22.0",
-      "from": "babel-code-frame@>=6.16.0 <7.0.0",
+      "from": "babel-code-frame@>=6.22.0 <7.0.0",
       "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
       "dev": true
     },
     "babel-core": {
-      "version": "6.24.0",
-      "from": "babel-core@>=6.0.12 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.0.tgz",
+      "version": "6.24.1",
+      "from": "babel-core@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.1.tgz",
       "dev": true
     },
     "babel-eslint": {
-      "version": "7.1.1",
-      "from": "babel-eslint@>=7.1.1 <8.0.0",
-      "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.1.1.tgz",
+      "version": "7.2.2",
+      "from": "babel-eslint@>=7.2.2 <8.0.0",
+      "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.2.tgz",
       "dev": true
     },
     "babel-generator": {
-      "version": "6.24.0",
-      "from": "babel-generator@>=6.24.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.24.0.tgz",
+      "version": "6.24.1",
+      "from": "babel-generator@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.24.1.tgz",
+      "dev": true
+    },
+    "babel-helper-call-delegate": {
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-call-delegate@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-7.0.0-alpha.7.tgz",
       "dev": true,
       "dependencies": {
-        "jsesc": {
-          "version": "1.3.0",
-          "from": "jsesc@>=1.3.0 <2.0.0",
-          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
           "dev": true
         }
       }
     },
-    "babel-helper-call-delegate": {
-      "version": "6.22.0",
-      "from": "babel-helper-call-delegate@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz",
-      "dev": true
-    },
     "babel-helper-define-map": {
-      "version": "6.23.0",
-      "from": "babel-helper-define-map@>=6.23.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-define-map@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helper-function-name": {
-      "version": "6.23.0",
-      "from": "babel-helper-function-name@>=6.23.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-function-name@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helper-get-function-arity": {
-      "version": "6.22.0",
-      "from": "babel-helper-get-function-arity@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-get-function-arity@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helper-hoist-variables": {
-      "version": "6.22.0",
-      "from": "babel-helper-hoist-variables@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-hoist-variables@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helper-optimise-call-expression": {
-      "version": "6.23.0",
-      "from": "babel-helper-optimise-call-expression@>=6.23.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-optimise-call-expression@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helper-regex": {
-      "version": "6.22.0",
-      "from": "babel-helper-regex@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-regex@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helper-replace-supers": {
-      "version": "6.23.0",
-      "from": "babel-helper-replace-supers@>=6.23.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-helper-replace-supers@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-helpers": {
-      "version": "6.23.0",
-      "from": "babel-helpers@>=6.23.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.23.0.tgz",
+      "version": "6.24.1",
+      "from": "babel-helpers@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
       "dev": true
     },
     "babel-messages": {
@@ -335,171 +453,521 @@
       "dev": true
     },
     "babel-plugin-check-es2015-constants": {
-      "version": "6.22.0",
-      "from": "babel-plugin-check-es2015-constants@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-check-es2015-constants@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-arrow-functions": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-arrow-functions@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-arrow-functions@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-block-scoped-functions": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-block-scoped-functions@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-block-scoped-functions@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-block-scoping": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-block-scoping@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-block-scoping@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-classes": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-classes@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-classes@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-computed-properties": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-computed-properties@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-computed-properties@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-destructuring": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-destructuring@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-destructuring@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-duplicate-keys": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-duplicate-keys@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-duplicate-keys@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-for-of": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-for-of@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-for-of@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-function-name": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-function-name@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-function-name@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-literals": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-literals@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-literals@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-modules-amd": {
-      "version": "6.24.0",
-      "from": "babel-plugin-transform-es2015-modules-amd@>=6.24.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-modules-amd@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-modules-commonjs": {
-      "version": "6.24.0",
-      "from": "babel-plugin-transform-es2015-modules-commonjs@>=6.24.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-modules-commonjs@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-modules-strip": {
-      "version": "0.1.0",
-      "from": "babel-plugin-transform-es2015-modules-strip@>=0.1.0 <0.2.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-strip/-/babel-plugin-transform-es2015-modules-strip-0.1.0.tgz",
+      "version": "0.1.1",
+      "from": "babel-plugin-transform-es2015-modules-strip@>=0.1.1 <0.2.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-strip/-/babel-plugin-transform-es2015-modules-strip-0.1.1.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-modules-systemjs": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-modules-systemjs@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-modules-systemjs@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-modules-umd": {
-      "version": "6.24.0",
-      "from": "babel-plugin-transform-es2015-modules-umd@>=6.24.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-modules-umd@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-object-super": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-object-super@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-object-super@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-parameters": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-parameters@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-parameters@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-code-frame": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-code-frame@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-messages": {
+          "version": "7.0.0-alpha.3",
+          "from": "babel-messages@7.0.0-alpha.3",
+          "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-7.0.0-alpha.3.tgz",
+          "dev": true
+        },
+        "babel-template": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-template@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-traverse": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-traverse@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        },
+        "babylon": {
+          "version": "7.0.0-beta.8",
+          "from": "babylon@7.0.0-beta.8",
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.8.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-shorthand-properties": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-shorthand-properties@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-shorthand-properties@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-spread": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-spread@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-spread@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-sticky-regex": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-sticky-regex@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz",
-      "dev": true
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-sticky-regex@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
     },
     "babel-plugin-transform-es2015-template-literals": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-template-literals@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-template-literals@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-typeof-symbol": {
-      "version": "6.23.0",
-      "from": "babel-plugin-transform-es2015-typeof-symbol@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-typeof-symbol@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-es2015-unicode-regex": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-es2015-unicode-regex@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-es2015-unicode-regex@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-regenerator": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-regenerator@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-regenerator@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-plugin-transform-strict-mode": {
-      "version": "6.22.0",
-      "from": "babel-plugin-transform-strict-mode@>=6.22.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-plugin-transform-strict-mode@7.0.0-alpha.7",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-7.0.0-alpha.7.tgz",
+      "dev": true,
+      "dependencies": {
+        "babel-types": {
+          "version": "7.0.0-alpha.7",
+          "from": "babel-types@7.0.0-alpha.7",
+          "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-7.0.0-alpha.7.tgz",
+          "dev": true
+        }
+      }
+    },
+    "babel-polyfill": {
+      "version": "6.23.0",
+      "from": "babel-polyfill@>=6.23.0 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
       "dev": true
     },
     "babel-preset-es2015": {
-      "version": "6.24.0",
-      "from": "babel-preset-es2015@>=6.24.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.0.tgz",
+      "version": "7.0.0-alpha.7",
+      "from": "babel-preset-es2015@>=7.0.0-alpha.3 <8.0.0",
+      "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-7.0.0-alpha.7.tgz",
       "dev": true
     },
     "babel-register": {
-      "version": "6.24.0",
-      "from": "babel-register@>=6.24.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.0.tgz",
+      "version": "6.24.1",
+      "from": "babel-register@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz",
       "dev": true
     },
     "babel-runtime": {
@@ -509,26 +977,26 @@
       "dev": true
     },
     "babel-template": {
-      "version": "6.23.0",
-      "from": "babel-template@>=6.23.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.23.0.tgz",
+      "version": "6.24.1",
+      "from": "babel-template@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.24.1.tgz",
       "dev": true
     },
     "babel-traverse": {
-      "version": "6.23.1",
-      "from": "babel-traverse@>=6.15.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.23.1.tgz",
+      "version": "6.24.1",
+      "from": "babel-traverse@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.24.1.tgz",
       "dev": true
     },
     "babel-types": {
-      "version": "6.23.0",
-      "from": "babel-types@>=6.15.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.23.0.tgz",
+      "version": "6.24.1",
+      "from": "babel-types@>=6.24.1 <7.0.0",
+      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.24.1.tgz",
       "dev": true
     },
     "babylon": {
       "version": "6.16.1",
-      "from": "babylon@>=6.13.0 <7.0.0",
+      "from": "babylon@>=6.11.0 <7.0.0",
       "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.16.1.tgz",
       "dev": true
     },
@@ -538,18 +1006,6 @@
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
       "dev": true
     },
-    "basic-auth": {
-      "version": "1.1.0",
-      "from": "basic-auth@>=1.1.0 <1.2.0",
-      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
-      "dev": true
-    },
-    "batch": {
-      "version": "0.5.3",
-      "from": "batch@0.5.3",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
-      "dev": true
-    },
     "bcrypt-pbkdf": {
       "version": "1.0.1",
       "from": "bcrypt-pbkdf@>=1.0.0 <2.0.0",
@@ -563,12 +1019,6 @@
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz",
       "dev": true
     },
-    "bl": {
-      "version": "1.2.0",
-      "from": "bl@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.0.tgz",
-      "dev": true
-    },
     "block-stream": {
       "version": "0.0.9",
       "from": "block-stream@*",
@@ -577,48 +1027,10 @@
     },
     "bluebird": {
       "version": "3.5.0",
-      "from": "bluebird@>=3.0.6 <4.0.0",
+      "from": "bluebird@>=3.4.7 <4.0.0",
       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
       "dev": true
     },
-    "body-parser": {
-      "version": "1.14.2",
-      "from": "body-parser@>=1.14.0 <1.15.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.2.0",
-          "from": "debug@>=2.2.0 <2.3.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
-          "dev": true
-        },
-        "http-errors": {
-          "version": "1.3.1",
-          "from": "http-errors@>=1.3.1 <1.4.0",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
-          "dev": true
-        },
-        "iconv-lite": {
-          "version": "0.4.13",
-          "from": "iconv-lite@0.4.13",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
-          "dev": true
-        },
-        "ms": {
-          "version": "0.7.1",
-          "from": "ms@0.7.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
-          "dev": true
-        },
-        "qs": {
-          "version": "5.2.0",
-          "from": "qs@5.2.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz",
-          "dev": true
-        }
-      }
-    },
     "boom": {
       "version": "2.10.1",
       "from": "boom@>=2.0.0 <3.0.0",
@@ -626,9 +1038,9 @@
       "dev": true
     },
     "brace-expansion": {
-      "version": "1.1.6",
+      "version": "1.1.7",
       "from": "brace-expansion@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
       "dev": true
     },
     "braces": {
@@ -638,20 +1050,14 @@
       "dev": true
     },
     "browserslist": {
-      "version": "1.7.6",
+      "version": "1.7.7",
       "from": "browserslist@>=1.7.6 <2.0.0",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.6.tgz",
-      "dev": true
-    },
-    "buffer-crc32": {
-      "version": "0.2.13",
-      "from": "buffer-crc32@>=0.2.1 <0.3.0",
-      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
       "dev": true
     },
     "buffer-shims": {
       "version": "1.0.0",
-      "from": "buffer-shims@>=1.0.0 <2.0.0",
+      "from": "buffer-shims@>=1.0.0 <1.1.0",
       "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
       "dev": true
     },
@@ -681,12 +1087,6 @@
         }
       }
     },
-    "bytes": {
-      "version": "2.2.0",
-      "from": "bytes@2.2.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
-      "dev": true
-    },
     "caller-path": {
       "version": "0.1.0",
       "from": "caller-path@>=0.1.0 <0.2.0",
@@ -700,27 +1100,35 @@
       "dev": true
     },
     "camelcase": {
-      "version": "2.1.1",
-      "from": "camelcase@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+      "version": "3.0.0",
+      "from": "camelcase@>=3.0.0 <4.0.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
       "dev": true
     },
     "camelcase-keys": {
       "version": "2.1.0",
       "from": "camelcase-keys@>=2.0.0 <3.0.0",
       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
-      "dev": true
+      "dev": true,
+      "dependencies": {
+        "camelcase": {
+          "version": "2.1.1",
+          "from": "camelcase@>=2.0.0 <3.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+          "dev": true
+        }
+      }
     },
     "caniuse-db": {
-      "version": "1.0.30000637",
+      "version": "1.0.30000653",
       "from": "caniuse-db@>=1.0.30000634 <2.0.0",
-      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000637.tgz",
+      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000653.tgz",
       "dev": true
     },
     "caseless": {
-      "version": "0.11.0",
-      "from": "caseless@>=0.11.0 <0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+      "version": "0.12.0",
+      "from": "caseless@>=0.12.0 <0.13.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
       "dev": true
     },
     "center-align": {
@@ -762,15 +1170,15 @@
       "dev": true
     },
     "clean-css": {
-      "version": "4.0.9",
-      "from": "clean-css@>=4.0.9 <5.0.0",
-      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.0.9.tgz",
+      "version": "4.0.12",
+      "from": "clean-css@>=4.0.12 <5.0.0",
+      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.0.12.tgz",
       "dev": true
     },
     "clean-css-cli": {
-      "version": "4.0.9",
-      "from": "clean-css-cli@>=4.0.9 <5.0.0",
-      "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-4.0.9.tgz",
+      "version": "4.0.12",
+      "from": "clean-css-cli@>=4.0.12 <5.0.0",
+      "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-4.0.12.tgz",
       "dev": true
     },
     "cli": {
@@ -829,16 +1237,10 @@
       "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
       "dev": true
     },
-    "coffee-script": {
-      "version": "1.10.0",
-      "from": "coffee-script@>=1.10.0 <1.11.0",
-      "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz",
-      "dev": true
-    },
     "colors": {
-      "version": "1.1.2",
-      "from": "colors@>=1.1.2 <1.2.0",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+      "version": "1.0.3",
+      "from": "colors@1.0.3",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
       "dev": true
     },
     "combined-stream": {
@@ -849,16 +1251,10 @@
     },
     "commander": {
       "version": "2.9.0",
-      "from": "commander@>=2.0.0 <3.0.0",
+      "from": "commander@>=2.8.1 <3.0.0",
       "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
       "dev": true
     },
-    "compress-commons": {
-      "version": "1.2.0",
-      "from": "compress-commons@>=1.1.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz",
-      "dev": true
-    },
     "concat-map": {
       "version": "0.0.1",
       "from": "concat-map@0.0.1",
@@ -871,26 +1267,6 @@
       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
       "dev": true
     },
-    "connect": {
-      "version": "3.6.0",
-      "from": "connect@>=3.4.0 <4.0.0",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.6.1",
-          "from": "debug@2.6.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
-          "dev": true
-        }
-      }
-    },
-    "connect-livereload": {
-      "version": "0.5.4",
-      "from": "connect-livereload@>=0.5.0 <0.6.0",
-      "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
-      "dev": true
-    },
     "console-browserify": {
       "version": "1.1.0",
       "from": "console-browserify@>=1.1.0 <1.2.0",
@@ -903,16 +1279,10 @@
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
       "dev": true
     },
-    "content-type": {
-      "version": "1.0.2",
-      "from": "content-type@>=1.0.1 <1.1.0",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
-      "dev": true
-    },
     "convert-source-map": {
-      "version": "1.4.0",
+      "version": "1.5.0",
       "from": "convert-source-map@>=1.1.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.4.0.tgz",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
       "dev": true
     },
     "core-js": {
@@ -941,18 +1311,6 @@
         }
       }
     },
-    "crc": {
-      "version": "3.4.4",
-      "from": "crc@>=3.4.4 <4.0.0",
-      "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
-      "dev": true
-    },
-    "crc32-stream": {
-      "version": "2.0.0",
-      "from": "crc32-stream@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
-      "dev": true
-    },
     "cross-spawn": {
       "version": "3.0.1",
       "from": "cross-spawn@>=3.0.0 <4.0.0",
@@ -1011,27 +1369,15 @@
       "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
       "dev": true
     },
-    "date-time": {
-      "version": "1.1.0",
-      "from": "date-time@>=1.1.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz",
-      "dev": true
-    },
-    "dateformat": {
-      "version": "1.0.12",
-      "from": "dateformat@>=1.0.12 <1.1.0",
-      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
-      "dev": true
-    },
     "debug": {
       "version": "2.6.3",
-      "from": "debug@>=2.2.0 <3.0.0",
+      "from": "debug@>=2.1.1 <3.0.0",
       "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
       "dev": true
     },
     "decamelize": {
       "version": "1.2.0",
-      "from": "decamelize@>=1.1.2 <2.0.0",
+      "from": "decamelize@>=1.1.1 <2.0.0",
       "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
       "dev": true
     },
@@ -1041,6 +1387,12 @@
       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
       "dev": true
     },
+    "define-properties": {
+      "version": "1.1.2",
+      "from": "define-properties@>=1.1.2 <2.0.0",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+      "dev": true
+    },
     "del": {
       "version": "2.2.2",
       "from": "del@>=2.0.2 <3.0.0",
@@ -1059,16 +1411,10 @@
       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
       "dev": true
     },
-    "depd": {
-      "version": "1.1.0",
-      "from": "depd@>=1.1.0 <1.2.0",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
-      "dev": true
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "from": "destroy@>=1.0.4 <1.1.0",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+    "dependency-graph": {
+      "version": "0.5.0",
+      "from": "dependency-graph@>=0.5.0 <0.6.0",
+      "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.5.0.tgz",
       "dev": true
     },
     "detect-file": {
@@ -1127,6 +1473,12 @@
       "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
       "dev": true
     },
+    "duplexer": {
+      "version": "0.1.1",
+      "from": "duplexer@>=0.1.1 <0.2.0",
+      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+      "dev": true
+    },
     "ecc-jsbn": {
       "version": "0.1.1",
       "from": "ecc-jsbn@>=0.1.1 <0.2.0",
@@ -1134,28 +1486,16 @@
       "dev": true,
       "optional": true
     },
-    "ee-first": {
-      "version": "1.1.1",
-      "from": "ee-first@1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "dev": true
-    },
     "electron-to-chromium": {
-      "version": "1.2.7",
-      "from": "electron-to-chromium@>=1.2.5 <2.0.0",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.2.7.tgz",
-      "dev": true
-    },
-    "encodeurl": {
-      "version": "1.0.1",
-      "from": "encodeurl@>=1.0.1 <1.1.0",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
+      "version": "1.3.3",
+      "from": "electron-to-chromium@>=1.2.7 <2.0.0",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.3.tgz",
       "dev": true
     },
-    "end-of-stream": {
-      "version": "1.4.0",
-      "from": "end-of-stream@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
+    "ensure-posix-path": {
+      "version": "1.0.2",
+      "from": "ensure-posix-path@>=1.0.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz",
       "dev": true
     },
     "entities": {
@@ -1170,10 +1510,22 @@
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
       "dev": true
     },
+    "es-abstract": {
+      "version": "1.7.0",
+      "from": "es-abstract@>=1.4.3 <2.0.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz",
+      "dev": true
+    },
+    "es-to-primitive": {
+      "version": "1.1.1",
+      "from": "es-to-primitive@>=1.1.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+      "dev": true
+    },
     "es5-ext": {
-      "version": "0.10.14",
+      "version": "0.10.15",
       "from": "es5-ext@>=0.10.14 <0.11.0",
-      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.14.tgz",
+      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz",
       "dev": true
     },
     "es6-iterator": {
@@ -1218,12 +1570,6 @@
       "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
       "dev": true
     },
-    "escape-html": {
-      "version": "1.0.3",
-      "from": "escape-html@>=1.0.3 <1.1.0",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "dev": true
-    },
     "escape-string-regexp": {
       "version": "1.0.5",
       "from": "escape-string-regexp@>=1.0.2 <2.0.0",
@@ -1237,15 +1583,23 @@
       "dev": true
     },
     "eslint": {
-      "version": "3.18.0",
-      "from": "eslint@>=3.18.0 <4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.18.0.tgz",
-      "dev": true
+      "version": "3.19.0",
+      "from": "eslint@>=3.19.0 <4.0.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
+      "dev": true,
+      "dependencies": {
+        "user-home": {
+          "version": "2.0.0",
+          "from": "user-home@>=2.0.0 <3.0.0",
+          "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
+          "dev": true
+        }
+      }
     },
     "espree": {
-      "version": "3.4.0",
+      "version": "3.4.1",
       "from": "espree@>=3.4.0 <4.0.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.0.tgz",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.1.tgz",
       "dev": true
     },
     "esprima": {
@@ -1286,27 +1640,27 @@
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
       "dev": true
     },
-    "etag": {
-      "version": "1.8.0",
-      "from": "etag@>=1.8.0 <1.9.0",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
-      "dev": true
-    },
     "event-emitter": {
       "version": "0.3.5",
       "from": "event-emitter@>=0.3.5 <0.4.0",
       "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
       "dev": true
     },
-    "eventemitter2": {
-      "version": "0.4.14",
-      "from": "eventemitter2@>=0.4.13 <0.5.0",
-      "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+    "event-stream": {
+      "version": "3.3.4",
+      "from": "event-stream@>=3.3.0 <3.4.0",
+      "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz",
+      "dev": true
+    },
+    "exists-stat": {
+      "version": "1.0.0",
+      "from": "exists-stat@1.0.0",
+      "resolved": "https://registry.npmjs.org/exists-stat/-/exists-stat-1.0.0.tgz",
       "dev": true
     },
     "exit": {
       "version": "0.1.2",
-      "from": "exit@>=0.1.1 <0.2.0",
+      "from": "exit@>=0.1.0 <0.2.0",
       "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
       "dev": true
     },
@@ -1336,7 +1690,7 @@
     },
     "extend": {
       "version": "3.0.0",
-      "from": "extend@>=3.0.0 <3.1.0",
+      "from": "extend@>=3.0.0 <4.0.0",
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
       "dev": true
     },
@@ -1375,6 +1729,12 @@
           "from": "readable-stream@>=2.0.0 <2.1.0",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
           "dev": true
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "from": "string_decoder@>=0.10.0 <0.11.0",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "dev": true
         }
       }
     },
@@ -1390,38 +1750,12 @@
       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
       "dev": true
     },
-    "faye-websocket": {
-      "version": "0.10.0",
-      "from": "faye-websocket@>=0.10.0 <0.11.0",
-      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
-      "dev": true
-    },
     "fd-slicer": {
       "version": "1.0.1",
       "from": "fd-slicer@>=1.0.1 <1.1.0",
       "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
       "dev": true
     },
-    "fg-lodash": {
-      "version": "0.0.2",
-      "from": "fg-lodash@0.0.2",
-      "resolved": "https://registry.npmjs.org/fg-lodash/-/fg-lodash-0.0.2.tgz",
-      "dev": true,
-      "dependencies": {
-        "lodash": {
-          "version": "2.4.2",
-          "from": "lodash@>=2.4.1 <3.0.0",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
-          "dev": true
-        },
-        "underscore.string": {
-          "version": "2.3.3",
-          "from": "underscore.string@>=2.3.3 <2.4.0",
-          "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
-          "dev": true
-        }
-      }
-    },
     "figures": {
       "version": "1.7.0",
       "from": "figures@>=1.3.5 <2.0.0",
@@ -1434,12 +1768,6 @@
       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
       "dev": true
     },
-    "file-sync-cmp": {
-      "version": "0.1.1",
-      "from": "file-sync-cmp@>=0.1.0 <0.2.0",
-      "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz",
-      "dev": true
-    },
     "filename-regex": {
       "version": "2.0.0",
       "from": "filename-regex@>=2.0.0 <3.0.0",
@@ -1452,20 +1780,6 @@
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
       "dev": true
     },
-    "finalhandler": {
-      "version": "1.0.0",
-      "from": "finalhandler@1.0.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.6.1",
-          "from": "debug@2.6.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
-          "dev": true
-        }
-      }
-    },
     "find-up": {
       "version": "1.1.2",
       "from": "find-up@>=1.0.0 <2.0.0",
@@ -1473,18 +1787,10 @@
       "dev": true
     },
     "findup-sync": {
-      "version": "0.3.0",
-      "from": "findup-sync@>=0.3.0 <0.4.0",
-      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "glob": {
-          "version": "5.0.15",
-          "from": "glob@>=5.0.0 <5.1.0",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
-          "dev": true
-        }
-      }
+      "version": "0.4.3",
+      "from": "findup-sync@>=0.4.2 <0.5.0",
+      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
+      "dev": true
     },
     "fined": {
       "version": "1.0.2",
@@ -1516,6 +1822,12 @@
       "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
       "dev": true
     },
+    "foreach": {
+      "version": "2.0.5",
+      "from": "foreach@>=2.0.5 <3.0.0",
+      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+      "dev": true
+    },
     "forever-agent": {
       "version": "0.6.1",
       "from": "forever-agent@>=0.6.1 <0.7.0",
@@ -1523,15 +1835,15 @@
       "dev": true
     },
     "form-data": {
-      "version": "2.1.2",
+      "version": "2.1.4",
       "from": "form-data@>=2.1.1 <2.2.0",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
       "dev": true
     },
-    "fresh": {
-      "version": "0.5.0",
-      "from": "fresh@0.5.0",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
+    "from": {
+      "version": "0.1.7",
+      "from": "from@>=0.0.0 <1.0.0",
+      "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
       "dev": true
     },
     "fs-exists-sync": {
@@ -1547,9 +1859,23 @@
       "dev": true
     },
     "fs-promise": {
+      "version": "2.0.2",
+      "from": "fs-promise@>=2.0.2 <3.0.0",
+      "resolved": "https://registry.npmjs.org/fs-promise/-/fs-promise-2.0.2.tgz",
+      "dev": true,
+      "dependencies": {
+        "fs-extra": {
+          "version": "2.1.2",
+          "from": "fs-extra@>=2.0.0 <3.0.0",
+          "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
+          "dev": true
+        }
+      }
+    },
+    "fs-readdir-recursive": {
       "version": "1.0.0",
-      "from": "fs-promise@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/fs-promise/-/fs-promise-1.0.0.tgz",
+      "from": "fs-readdir-recursive@>=1.0.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz",
       "dev": true
     },
     "fs.realpath": {
@@ -1564,6 +1890,12 @@
       "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
       "dev": true
     },
+    "function-bind": {
+      "version": "1.1.0",
+      "from": "function-bind@>=1.0.2 <2.0.0",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
+      "dev": true
+    },
     "gauge": {
       "version": "2.7.3",
       "from": "gauge@>=2.7.1 <2.8.0",
@@ -1600,12 +1932,6 @@
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
       "dev": true
     },
-    "getobject": {
-      "version": "0.1.0",
-      "from": "getobject@>=0.1.0 <0.2.0",
-      "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
-      "dev": true
-    },
     "getpass": {
       "version": "0.1.6",
       "from": "getpass@>=0.1.1 <0.2.0",
@@ -1622,7 +1948,7 @@
     },
     "glob": {
       "version": "7.1.1",
-      "from": "glob@>=7.0.3 <8.0.0",
+      "from": "glob@>=7.0.0 <8.0.0",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
       "dev": true
     },
@@ -1651,9 +1977,9 @@
       "dev": true
     },
     "globals": {
-      "version": "9.16.0",
+      "version": "9.17.0",
       "from": "globals@>=9.0.0 <10.0.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-9.16.0.tgz",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz",
       "dev": true
     },
     "globby": {
@@ -1688,210 +2014,22 @@
       "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
       "dev": true
     },
-    "grunt": {
-      "version": "1.0.1",
-      "from": "grunt@>=1.0.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "esprima": {
-          "version": "2.7.3",
-          "from": "esprima@>=2.6.0 <3.0.0",
-          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
-          "dev": true
-        },
-        "glob": {
-          "version": "7.0.6",
-          "from": "glob@>=7.0.0 <7.1.0",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
-          "dev": true
-        },
-        "grunt-cli": {
-          "version": "1.2.0",
-          "from": "grunt-cli@>=1.2.0 <1.3.0",
-          "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
-          "dev": true
-        },
-        "js-yaml": {
-          "version": "3.5.5",
-          "from": "js-yaml@>=3.5.2 <3.6.0",
-          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz",
-          "dev": true
-        },
-        "resolve": {
-          "version": "1.1.7",
-          "from": "resolve@>=1.1.0 <1.2.0",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
-          "dev": true
-        },
-        "rimraf": {
-          "version": "2.2.8",
-          "from": "rimraf@>=2.2.8 <2.3.0",
-          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-babel": {
-      "version": "6.0.0",
-      "from": "grunt-babel@>=6.0.0 <7.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-babel/-/grunt-babel-6.0.0.tgz",
-      "dev": true
-    },
-    "grunt-build-control": {
-      "version": "0.7.1",
-      "from": "grunt-build-control@>=0.7.1 <0.8.0",
-      "resolved": "https://registry.npmjs.org/grunt-build-control/-/grunt-build-control-0.7.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "semver": {
-          "version": "4.3.6",
-          "from": "semver@>=4.3.3 <4.4.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
-          "dev": true
-        },
-        "shelljs": {
-          "version": "0.2.6",
-          "from": "shelljs@>=0.2.6 <0.3.0",
-          "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.2.6.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-contrib-clean": {
-      "version": "1.0.0",
-      "from": "grunt-contrib-clean@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.0.0.tgz",
+    "har-schema": {
+      "version": "1.0.5",
+      "from": "har-schema@>=1.0.5 <2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
       "dev": true
     },
-    "grunt-contrib-compress": {
-      "version": "1.4.1",
-      "from": "grunt-contrib-compress@>=1.4.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.4.1.tgz",
+    "har-validator": {
+      "version": "4.2.1",
+      "from": "har-validator@>=4.2.1 <4.3.0",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
       "dev": true
     },
-    "grunt-contrib-concat": {
+    "has": {
       "version": "1.0.1",
-      "from": "grunt-contrib-concat@>=1.0.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz",
-      "dev": true
-    },
-    "grunt-contrib-connect": {
-      "version": "1.0.2",
-      "from": "grunt-contrib-connect@>=1.0.2 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz",
-      "dev": true
-    },
-    "grunt-contrib-copy": {
-      "version": "1.0.0",
-      "from": "grunt-contrib-copy@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz",
-      "dev": true
-    },
-    "grunt-contrib-qunit": {
-      "version": "1.3.0",
-      "from": "grunt-contrib-qunit@>=1.3.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-1.3.0.tgz",
-      "dev": true
-    },
-    "grunt-contrib-watch": {
-      "version": "1.0.0",
-      "from": "grunt-contrib-watch@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "lodash": {
-          "version": "3.10.1",
-          "from": "lodash@>=3.10.1 <4.0.0",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-exec": {
-      "version": "2.0.0",
-      "from": "grunt-exec@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-2.0.0.tgz",
-      "dev": true
-    },
-    "grunt-known-options": {
-      "version": "1.1.0",
-      "from": "grunt-known-options@>=1.1.0 <1.2.0",
-      "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz",
-      "dev": true
-    },
-    "grunt-legacy-log": {
-      "version": "1.0.0",
-      "from": "grunt-legacy-log@>=1.0.0 <1.1.0",
-      "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "lodash": {
-          "version": "3.10.1",
-          "from": "lodash@>=3.10.1 <3.11.0",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-legacy-log-utils": {
-      "version": "1.0.0",
-      "from": "grunt-legacy-log-utils@>=1.0.0 <1.1.0",
-      "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "lodash": {
-          "version": "4.3.0",
-          "from": "lodash@>=4.3.0 <4.4.0",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-legacy-util": {
-      "version": "1.0.0",
-      "from": "grunt-legacy-util@>=1.0.0 <1.1.0",
-      "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "lodash": {
-          "version": "4.3.0",
-          "from": "lodash@>=4.3.0 <4.4.0",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-lib-phantomjs": {
-      "version": "1.1.0",
-      "from": "grunt-lib-phantomjs@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-lib-phantomjs/-/grunt-lib-phantomjs-1.1.0.tgz",
-      "dev": true
-    },
-    "grunt-saucelabs": {
-      "version": "9.0.0",
-      "from": "grunt-saucelabs@>=9.0.0 <10.0.0",
-      "resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-9.0.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "lodash": {
-          "version": "4.13.1",
-          "from": "lodash@>=4.13.1 <4.14.0",
-          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.13.1.tgz",
-          "dev": true
-        }
-      }
-    },
-    "grunt-stamp": {
-      "version": "0.3.0",
-      "from": "grunt-stamp@>=0.3.0 <0.4.0",
-      "resolved": "https://registry.npmjs.org/grunt-stamp/-/grunt-stamp-0.3.0.tgz",
-      "dev": true
-    },
-    "har-validator": {
-      "version": "2.0.6",
-      "from": "har-validator@>=2.0.6 <2.1.0",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+      "from": "has@>=1.0.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
       "dev": true
     },
     "has-ansi": {
@@ -1942,16 +2080,10 @@
       "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
       "dev": true
     },
-    "hooker": {
-      "version": "0.2.3",
-      "from": "hooker@>=0.2.3 <0.3.0",
-      "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
-      "dev": true
-    },
     "hosted-git-info": {
-      "version": "2.3.1",
+      "version": "2.4.2",
       "from": "hosted-git-info@>=2.1.4 <3.0.0",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.3.1.tgz",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz",
       "dev": true
     },
     "htmlhint": {
@@ -1960,18 +2092,6 @@
       "resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-0.9.13.tgz",
       "dev": true,
       "dependencies": {
-        "async": {
-          "version": "1.4.2",
-          "from": "async@1.4.2",
-          "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz",
-          "dev": true
-        },
-        "colors": {
-          "version": "1.0.3",
-          "from": "colors@1.0.3",
-          "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
-          "dev": true
-        },
         "commander": {
           "version": "2.6.0",
           "from": "commander@2.6.0",
@@ -2021,52 +2141,27 @@
           "from": "readable-stream@>=1.1.0 <1.2.0",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
           "dev": true
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "from": "string_decoder@>=0.10.0 <0.11.0",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "dev": true
         }
       }
     },
-    "http-errors": {
-      "version": "1.5.1",
-      "from": "http-errors@>=1.5.0 <1.6.0",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz",
-      "dev": true
-    },
     "http-signature": {
       "version": "1.1.1",
       "from": "http-signature@>=1.1.0 <1.2.0",
       "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
       "dev": true
     },
-    "http2": {
-      "version": "3.3.6",
-      "from": "http2@>=3.3.4 <4.0.0",
-      "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.6.tgz",
-      "dev": true
-    },
-    "https-proxy-agent": {
-      "version": "1.0.0",
-      "from": "https-proxy-agent@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
-      "dev": true
-    },
-    "iconv-lite": {
-      "version": "0.4.15",
-      "from": "iconv-lite@>=0.4.13 <0.5.0",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
-      "dev": true
-    },
     "ignore": {
-      "version": "3.2.6",
+      "version": "3.2.7",
       "from": "ignore@>=3.2.0 <4.0.0",
-      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.6.tgz",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.7.tgz",
       "dev": true
     },
-    "iltorb": {
-      "version": "1.0.13",
-      "from": "iltorb@>=1.0.13 <2.0.0",
-      "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-1.0.13.tgz",
-      "dev": true,
-      "optional": true
-    },
     "imurmurhash": {
       "version": "0.1.4",
       "from": "imurmurhash@>=0.1.4 <0.2.0",
@@ -2093,7 +2188,7 @@
     },
     "inherits": {
       "version": "2.0.3",
-      "from": "inherits@>=2.0.3 <3.0.0",
+      "from": "inherits@>=2.0.1 <3.0.0",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
       "dev": true
     },
@@ -2110,9 +2205,9 @@
       "dev": true
     },
     "interpret": {
-      "version": "1.0.1",
+      "version": "1.0.2",
       "from": "interpret@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.2.tgz",
       "dev": true
     },
     "invariant": {
@@ -2157,6 +2252,18 @@
       "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
       "dev": true
     },
+    "is-callable": {
+      "version": "1.1.3",
+      "from": "is-callable@>=1.1.3 <2.0.0",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
+      "dev": true
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "from": "is-date-object@>=1.0.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+      "dev": true
+    },
     "is-dotfile": {
       "version": "1.0.2",
       "from": "is-dotfile@>=1.0.0 <2.0.0",
@@ -2247,6 +2354,12 @@
       "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
       "dev": true
     },
+    "is-regex": {
+      "version": "1.0.4",
+      "from": "is-regex@>=1.0.3 <2.0.0",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+      "dev": true
+    },
     "is-relative": {
       "version": "0.2.1",
       "from": "is-relative@>=0.2.1 <0.3.0",
@@ -2265,10 +2378,10 @@
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
       "dev": true
     },
-    "is-travis": {
-      "version": "1.0.0",
-      "from": "is-travis@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/is-travis/-/is-travis-1.0.0.tgz",
+    "is-symbol": {
+      "version": "1.0.1",
+      "from": "is-symbol@>=1.0.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
       "dev": true
     },
     "is-typedarray": {
@@ -2297,14 +2410,14 @@
     },
     "isarray": {
       "version": "1.0.0",
-      "from": "isarray@>=1.0.0 <1.1.0",
+      "from": "isarray@1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
       "dev": true
     },
     "isexe": {
-      "version": "1.1.2",
-      "from": "isexe@>=1.1.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz",
+      "version": "2.0.0",
+      "from": "isexe@>=2.0.0 <3.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
       "dev": true
     },
     "isobject": {
@@ -2333,9 +2446,9 @@
       "optional": true
     },
     "jquery": {
-      "version": "3.2.0",
+      "version": "3.2.1",
       "from": "jquery@>=1.9.1",
-      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz"
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz"
     },
     "js-base64": {
       "version": "2.1.9",
@@ -2343,6 +2456,12 @@
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
       "dev": true
     },
+    "js-reporters": {
+      "version": "1.2.0",
+      "from": "js-reporters@1.2.0",
+      "resolved": "https://registry.npmjs.org/js-reporters/-/js-reporters-1.2.0.tgz",
+      "dev": true
+    },
     "js-tokens": {
       "version": "3.0.1",
       "from": "js-tokens@>=3.0.0 <4.0.0",
@@ -2350,9 +2469,9 @@
       "dev": true
     },
     "js-yaml": {
-      "version": "3.8.2",
+      "version": "3.8.3",
       "from": "js-yaml@>=3.5.1 <4.0.0",
-      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.2.tgz",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.3.tgz",
       "dev": true
     },
     "jsbn": {
@@ -2363,9 +2482,9 @@
       "optional": true
     },
     "jsesc": {
-      "version": "0.5.0",
-      "from": "jsesc@>=0.5.0 <0.6.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+      "version": "1.3.0",
+      "from": "jsesc@>=1.3.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
       "dev": true
     },
     "jshint": {
@@ -2486,12 +2605,6 @@
       "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
       "dev": true
     },
-    "lazystream": {
-      "version": "1.0.0",
-      "from": "lazystream@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
-      "dev": true
-    },
     "lcid": {
       "version": "1.0.0",
       "from": "lcid@>=1.0.0 <2.0.0",
@@ -2508,26 +2621,6 @@
       "version": "2.3.0",
       "from": "liftoff@>=2.3.0 <3.0.0",
       "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "findup-sync": {
-          "version": "0.4.3",
-          "from": "findup-sync@>=0.4.2 <0.5.0",
-          "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
-          "dev": true
-        }
-      }
-    },
-    "livereload-js": {
-      "version": "2.2.2",
-      "from": "livereload-js@>=2.2.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
-      "dev": true
-    },
-    "load-grunt-tasks": {
-      "version": "3.5.2",
-      "from": "load-grunt-tasks@>=3.5.2 <4.0.0",
-      "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz",
       "dev": true
     },
     "load-json-file": {
@@ -2604,12 +2697,6 @@
       "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
       "dev": true
     },
-    "lodash.pickby": {
-      "version": "4.6.0",
-      "from": "lodash.pickby@>=4.6.0 <5.0.0",
-      "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
-      "dev": true
-    },
     "log-symbols": {
       "version": "1.0.2",
       "from": "log-symbols@>=1.0.2 <2.0.0",
@@ -2652,15 +2739,21 @@
       "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
       "dev": true
     },
-    "media-typer": {
-      "version": "0.3.0",
-      "from": "media-typer@0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+    "map-stream": {
+      "version": "0.1.0",
+      "from": "map-stream@>=0.1.0 <0.2.0",
+      "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+      "dev": true
+    },
+    "matcher-collection": {
+      "version": "1.0.4",
+      "from": "matcher-collection@>=1.0.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.4.tgz",
       "dev": true
     },
     "meow": {
       "version": "3.7.0",
-      "from": "meow@>=3.3.0 <4.0.0",
+      "from": "meow@>=3.7.0 <4.0.0",
       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
       "dev": true,
       "dependencies": {
@@ -2674,26 +2767,20 @@
     },
     "micromatch": {
       "version": "2.3.11",
-      "from": "micromatch@>=2.3.7 <3.0.0",
+      "from": "micromatch@>=2.1.5 <3.0.0",
       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
       "dev": true
     },
-    "mime": {
-      "version": "1.3.4",
-      "from": "mime@1.3.4",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
-      "dev": true
-    },
     "mime-db": {
-      "version": "1.26.0",
-      "from": "mime-db@>=1.26.0 <1.27.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz",
+      "version": "1.27.0",
+      "from": "mime-db@>=1.27.0 <1.28.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
       "dev": true
     },
     "mime-types": {
-      "version": "2.1.14",
-      "from": "mime-types@>=2.1.11 <2.2.0",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz",
+      "version": "2.1.15",
+      "from": "mime-types@>=2.1.7 <2.2.0",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
       "dev": true
     },
     "mimic-fn": {
@@ -2716,36 +2803,16 @@
     },
     "mkdirp": {
       "version": "0.5.1",
-      "from": "mkdirp@>=0.5.0 <0.6.0",
+      "from": "mkdirp@>=0.5.1 <0.6.0",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
       "dev": true
     },
-    "morgan": {
-      "version": "1.8.1",
-      "from": "morgan@>=1.6.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.6.1",
-          "from": "debug@2.6.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
-          "dev": true
-        }
-      }
-    },
     "ms": {
       "version": "0.7.2",
       "from": "ms@0.7.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
       "dev": true
     },
-    "multimatch": {
-      "version": "2.1.0",
-      "from": "multimatch@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
-      "dev": true
-    },
     "mute-stream": {
       "version": "0.0.5",
       "from": "mute-stream@0.0.5",
@@ -2754,14 +2821,14 @@
     },
     "mz": {
       "version": "2.6.0",
-      "from": "mz@>=2.3.1 <3.0.0",
+      "from": "mz@>=2.6.0 <3.0.0",
       "resolved": "https://registry.npmjs.org/mz/-/mz-2.6.0.tgz",
       "dev": true
     },
     "nan": {
-      "version": "2.5.1",
-      "from": "nan@>=2.4.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz",
+      "version": "2.6.2",
+      "from": "nan@>=2.3.2 <3.0.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
       "dev": true
     },
     "natural-compare": {
@@ -2770,12 +2837,6 @@
       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
       "dev": true
     },
-    "negotiator": {
-      "version": "0.6.1",
-      "from": "negotiator@0.6.1",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "dev": true
-    },
     "node-gyp": {
       "version": "3.6.0",
       "from": "node-gyp@>=3.3.1 <4.0.0",
@@ -2783,27 +2844,27 @@
       "dev": true
     },
     "node-sass": {
-      "version": "4.5.0",
-      "from": "node-sass@>=4.5.0 <5.0.0",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.0.tgz",
+      "version": "4.5.2",
+      "from": "node-sass@>=4.5.2 <5.0.0",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.2.tgz",
       "dev": true
     },
     "nopt": {
       "version": "3.0.6",
-      "from": "nopt@>=3.0.6 <3.1.0",
+      "from": "nopt@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
       "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
       "dev": true
     },
     "normalize-package-data": {
       "version": "2.3.6",
-      "from": "normalize-package-data@>=2.3.4 <3.0.0",
+      "from": "normalize-package-data@>=2.3.2 <3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.6.tgz",
       "dev": true
     },
     "normalize-path": {
-      "version": "2.0.1",
-      "from": "normalize-path@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.0.1.tgz",
+      "version": "2.1.1",
+      "from": "normalize-path@>=2.0.1 <3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
       "dev": true
     },
     "normalize-range": {
@@ -2812,6 +2873,44 @@
       "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
       "dev": true
     },
+    "npm-run-all": {
+      "version": "4.0.2",
+      "from": "npm-run-all@>=4.0.2 <5.0.0",
+      "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.0.2.tgz",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "from": "cross-spawn@>=5.0.1 <6.0.0",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "dev": true
+        },
+        "load-json-file": {
+          "version": "2.0.0",
+          "from": "load-json-file@>=2.0.0 <3.0.0",
+          "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.0.2",
+          "from": "lru-cache@>=4.0.1 <5.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "from": "path-type@>=2.0.0 <3.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "2.0.0",
+          "from": "read-pkg@>=2.0.0 <3.0.0",
+          "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+          "dev": true
+        }
+      }
+    },
     "npmlog": {
       "version": "4.0.2",
       "from": "npmlog@>=4.0.0 <5.0.0",
@@ -2838,28 +2937,22 @@
     },
     "object-assign": {
       "version": "4.1.1",
-      "from": "object-assign@>=4.0.1 <5.0.0",
+      "from": "object-assign@>=4.1.0 <5.0.0",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
       "dev": true
     },
+    "object-keys": {
+      "version": "1.0.11",
+      "from": "object-keys@>=1.0.8 <2.0.0",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
+      "dev": true
+    },
     "object.omit": {
       "version": "2.0.1",
       "from": "object.omit@>=2.0.0 <3.0.0",
       "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
       "dev": true
     },
-    "on-finished": {
-      "version": "2.3.0",
-      "from": "on-finished@>=2.3.0 <2.4.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "dev": true
-    },
-    "on-headers": {
-      "version": "1.0.1",
-      "from": "on-headers@>=1.0.1 <1.1.0",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
-      "dev": true
-    },
     "once": {
       "version": "1.4.0",
       "from": "once@>=1.3.0 <2.0.0",
@@ -2872,12 +2965,6 @@
       "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
       "dev": true
     },
-    "opn": {
-      "version": "4.0.2",
-      "from": "opn@>=4.0.0 <5.0.0",
-      "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
-      "dev": true
-    },
     "optionator": {
       "version": "0.8.2",
       "from": "optionator@>=0.8.2 <0.9.0",
@@ -2885,9 +2972,9 @@
       "dev": true
     },
     "ora": {
-      "version": "1.1.0",
+      "version": "1.2.0",
       "from": "ora@>=1.1.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/ora/-/ora-1.1.0.tgz",
+      "resolved": "https://registry.npmjs.org/ora/-/ora-1.2.0.tgz",
       "dev": true,
       "dependencies": {
         "cli-cursor": {
@@ -2897,9 +2984,9 @@
           "dev": true
         },
         "onetime": {
-          "version": "2.0.0",
+          "version": "2.0.1",
           "from": "onetime@>=2.0.0 <3.0.0",
-          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.0.tgz",
+          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
           "dev": true
         },
         "restore-cursor": {
@@ -2934,10 +3021,10 @@
       "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
       "dev": true
     },
-    "package": {
-      "version": "1.0.1",
-      "from": "package@>=1.0.0 <1.2.0",
-      "resolved": "https://registry.npmjs.org/package/-/package-1.0.1.tgz",
+    "output-file-sync": {
+      "version": "1.1.2",
+      "from": "output-file-sync@>=1.1.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
       "dev": true
     },
     "parse-filepath": {
@@ -2948,7 +3035,7 @@
     },
     "parse-glob": {
       "version": "3.0.4",
-      "from": "parse-glob@3.0.4",
+      "from": "parse-glob@>=3.0.4 <4.0.0",
       "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
       "dev": true
     },
@@ -2958,12 +3045,6 @@
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
       "dev": true
     },
-    "parse-ms": {
-      "version": "1.0.1",
-      "from": "parse-ms@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz",
-      "dev": true
-    },
     "parse-passwd": {
       "version": "1.0.0",
       "from": "parse-passwd@>=1.0.0 <2.0.0",
@@ -2976,12 +3057,6 @@
       "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-0.2.5.tgz",
       "dev": true
     },
-    "parseurl": {
-      "version": "1.3.1",
-      "from": "parseurl@>=1.3.1 <1.4.0",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
-      "dev": true
-    },
     "path-exists": {
       "version": "2.1.0",
       "from": "path-exists@>=2.0.0 <3.0.0",
@@ -3024,17 +3099,61 @@
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
       "dev": true
     },
+    "pause-stream": {
+      "version": "0.0.11",
+      "from": "pause-stream@0.0.11",
+      "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+      "dev": true
+    },
     "pend": {
       "version": "1.2.0",
       "from": "pend@>=1.2.0 <1.3.0",
       "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
       "dev": true
     },
+    "performance-now": {
+      "version": "0.2.0",
+      "from": "performance-now@>=0.2.0 <0.3.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+      "dev": true
+    },
     "phantomjs-prebuilt": {
       "version": "2.1.14",
-      "from": "phantomjs-prebuilt@>=2.1.3 <3.0.0",
+      "from": "phantomjs-prebuilt@>=2.1.14 <3.0.0",
       "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz",
-      "dev": true
+      "dev": true,
+      "dependencies": {
+        "caseless": {
+          "version": "0.11.0",
+          "from": "caseless@>=0.11.0 <0.12.0",
+          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+          "dev": true
+        },
+        "har-validator": {
+          "version": "2.0.6",
+          "from": "har-validator@>=2.0.6 <2.1.0",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.3.2",
+          "from": "qs@>=6.3.0 <6.4.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+          "dev": true
+        },
+        "request": {
+          "version": "2.79.0",
+          "from": "request@>=2.79.0 <2.80.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+          "dev": true
+        },
+        "tunnel-agent": {
+          "version": "0.4.3",
+          "from": "tunnel-agent@>=0.4.1 <0.5.0",
+          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+          "dev": true
+        }
+      }
     },
     "pify": {
       "version": "2.3.0",
@@ -3054,48 +3173,24 @@
       "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
       "dev": true
     },
-    "pkg-up": {
-      "version": "1.0.0",
-      "from": "pkg-up@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
-      "dev": true
-    },
-    "plur": {
-      "version": "1.0.0",
-      "from": "plur@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz",
-      "dev": true
-    },
     "pluralize": {
       "version": "1.2.1",
       "from": "pluralize@>=1.2.1 <2.0.0",
       "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
       "dev": true
     },
-    "portscanner": {
-      "version": "1.2.0",
-      "from": "portscanner@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
-      "dev": true
-    },
     "postcss": {
-      "version": "5.2.16",
+      "version": "5.2.17",
       "from": "postcss@>=5.2.16 <6.0.0",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.16.tgz",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz",
       "dev": true
     },
     "postcss-cli": {
-      "version": "3.0.0",
-      "from": "postcss-cli@>=3.0.0 <4.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-3.0.0.tgz",
+      "version": "3.1.1",
+      "from": "postcss-cli@>=3.1.1 <4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-3.1.1.tgz",
       "dev": true,
       "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "from": "camelcase@>=3.0.0 <4.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "dev": true
-        },
         "get-stdin": {
           "version": "5.0.1",
           "from": "get-stdin@>=5.0.1 <6.0.0",
@@ -3109,9 +3204,9 @@
           "dev": true
         },
         "yargs": {
-          "version": "7.0.2",
+          "version": "7.1.0",
           "from": "yargs@>=7.0.2 <8.0.0",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.0.2.tgz",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
           "dev": true
         },
         "yargs-parser": {
@@ -3123,9 +3218,9 @@
       }
     },
     "postcss-flexbugs-fixes": {
-      "version": "2.1.0",
-      "from": "postcss-flexbugs-fixes@>=2.1.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-2.1.0.tgz",
+      "version": "2.1.1",
+      "from": "postcss-flexbugs-fixes@>=2.1.1 <3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-2.1.1.tgz",
       "dev": true
     },
     "postcss-load-config": {
@@ -3170,18 +3265,6 @@
       "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
       "dev": true
     },
-    "pretty-bytes": {
-      "version": "3.0.1",
-      "from": "pretty-bytes@>=3.0.1 <4.0.0",
-      "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz",
-      "dev": true
-    },
-    "pretty-ms": {
-      "version": "2.1.0",
-      "from": "pretty-ms@>=2.1.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz",
-      "dev": true
-    },
     "private": {
       "version": "0.1.7",
       "from": "private@>=0.1.6 <0.2.0",
@@ -3206,6 +3289,12 @@
       "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz",
       "dev": true
     },
+    "ps-tree": {
+      "version": "1.1.0",
+      "from": "ps-tree@>=1.0.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz",
+      "dev": true
+    },
     "pseudomap": {
       "version": "1.0.2",
       "from": "pseudomap@>=1.0.1 <2.0.0",
@@ -3218,16 +3307,28 @@
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
       "dev": true
     },
-    "q": {
-      "version": "1.4.1",
-      "from": "q@>=1.4.1 <1.5.0",
-      "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+    "qs": {
+      "version": "6.4.0",
+      "from": "qs@>=6.4.0 <6.5.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
       "dev": true
     },
-    "qs": {
-      "version": "6.3.2",
-      "from": "qs@>=6.3.0 <6.4.0",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+    "qunit-phantomjs-runner": {
+      "version": "2.3.0",
+      "from": "qunit-phantomjs-runner@>=2.3.0 <3.0.0",
+      "resolved": "https://registry.npmjs.org/qunit-phantomjs-runner/-/qunit-phantomjs-runner-2.3.0.tgz",
+      "dev": true
+    },
+    "qunit-reporter-junit": {
+      "version": "1.1.1",
+      "from": "qunit-reporter-junit@>=1.0.2 <2.0.0",
+      "resolved": "https://registry.npmjs.org/qunit-reporter-junit/-/qunit-reporter-junit-1.1.1.tgz",
+      "dev": true
+    },
+    "qunitjs": {
+      "version": "2.3.1",
+      "from": "qunitjs@>=2.3.1 <3.0.0",
+      "resolved": "https://registry.npmjs.org/qunitjs/-/qunitjs-2.3.1.tgz",
       "dev": true
     },
     "randomatic": {
@@ -3236,32 +3337,12 @@
       "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz",
       "dev": true
     },
-    "range-parser": {
-      "version": "1.2.0",
-      "from": "range-parser@>=1.2.0 <1.3.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+    "read-cache": {
+      "version": "1.0.0",
+      "from": "read-cache@>=1.0.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
       "dev": true
     },
-    "raw-body": {
-      "version": "2.1.7",
-      "from": "raw-body@>=2.1.5 <2.2.0",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
-      "dev": true,
-      "dependencies": {
-        "bytes": {
-          "version": "2.4.0",
-          "from": "bytes@2.4.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
-          "dev": true
-        },
-        "iconv-lite": {
-          "version": "0.4.13",
-          "from": "iconv-lite@0.4.13",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
-          "dev": true
-        }
-      }
-    },
     "read-pkg": {
       "version": "1.1.0",
       "from": "read-pkg@>=1.0.0 <2.0.0",
@@ -3275,9 +3356,9 @@
       "dev": true
     },
     "readable-stream": {
-      "version": "2.2.6",
-      "from": "readable-stream@>=2.2.2 <3.0.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz",
+      "version": "2.2.9",
+      "from": "readable-stream@>=2.0.2 <3.0.0",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
       "dev": true
     },
     "readdirp": {
@@ -3306,10 +3387,16 @@
     },
     "regenerate": {
       "version": "1.3.2",
-      "from": "regenerate@>=1.2.1 <2.0.0",
+      "from": "regenerate@>=1.3.2 <2.0.0",
       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz",
       "dev": true
     },
+    "regenerate-unicode-properties": {
+      "version": "5.0.3",
+      "from": "regenerate-unicode-properties@>=5.0.3 <6.0.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.0.3.tgz",
+      "dev": true
+    },
     "regenerator-runtime": {
       "version": "0.10.3",
       "from": "regenerator-runtime@>=0.10.0 <0.11.0",
@@ -3317,9 +3404,9 @@
       "dev": true
     },
     "regenerator-transform": {
-      "version": "0.9.8",
-      "from": "regenerator-transform@0.9.8",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.8.tgz",
+      "version": "0.9.11",
+      "from": "regenerator-transform@0.9.11",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz",
       "dev": true
     },
     "regex-cache": {
@@ -3329,21 +3416,35 @@
       "dev": true
     },
     "regexpu-core": {
-      "version": "2.0.0",
-      "from": "regexpu-core@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
+      "version": "4.0.7",
+      "from": "regexpu-core@>=4.0.2 <5.0.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.0.7.tgz",
       "dev": true
     },
     "regjsgen": {
-      "version": "0.2.0",
-      "from": "regjsgen@>=0.2.0 <0.3.0",
-      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+      "version": "0.3.0",
+      "from": "regjsgen@>=0.3.0 <0.4.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz",
       "dev": true
     },
     "regjsparser": {
-      "version": "0.1.5",
-      "from": "regjsparser@>=0.1.4 <0.2.0",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+      "version": "0.2.1",
+      "from": "regjsparser@>=0.2.1 <0.3.0",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz",
+      "dev": true,
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "from": "jsesc@>=0.5.0 <0.6.0",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+          "dev": true
+        }
+      }
+    },
+    "remove-trailing-separator": {
+      "version": "1.0.1",
+      "from": "remove-trailing-separator@>=1.0.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz",
       "dev": true
     },
     "repeat-element": {
@@ -3365,9 +3466,9 @@
       "dev": true
     },
     "request": {
-      "version": "2.79.0",
-      "from": "request@>=2.79.0 <2.80.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+      "version": "2.81.0",
+      "from": "request@>=2.79.0 <3.0.0",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
       "dev": true
     },
     "request-progress": {
@@ -3376,12 +3477,6 @@
       "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz",
       "dev": true
     },
-    "requestretry": {
-      "version": "1.9.1",
-      "from": "requestretry@>=1.9.0 <1.10.0",
-      "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.9.1.tgz",
-      "dev": true
-    },
     "require-directory": {
       "version": "2.1.1",
       "from": "require-directory@>=2.1.1 <3.0.0",
@@ -3424,20 +3519,6 @@
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
       "dev": true
     },
-    "resolve-pkg": {
-      "version": "0.1.0",
-      "from": "resolve-pkg@>=0.1.0 <0.2.0",
-      "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "resolve-from": {
-          "version": "2.0.0",
-          "from": "resolve-from@>=2.0.0 <3.0.0",
-          "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
-          "dev": true
-        }
-      }
-    },
     "restore-cursor": {
       "version": "1.0.1",
       "from": "restore-cursor@>=1.0.1 <2.0.0",
@@ -3468,18 +3549,18 @@
       "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
       "dev": true
     },
+    "safe-buffer": {
+      "version": "5.0.1",
+      "from": "safe-buffer@>=5.0.1 <6.0.0",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
+      "dev": true
+    },
     "sass-graph": {
       "version": "2.1.2",
       "from": "sass-graph@>=2.1.1 <3.0.0",
       "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.1.2.tgz",
       "dev": true,
       "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "from": "camelcase@>=3.0.0 <4.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "dev": true
-        },
         "yargs": {
           "version": "4.8.1",
           "from": "yargs@>=4.7.1 <5.0.0",
@@ -3494,76 +3575,12 @@
         }
       }
     },
-    "sauce-tunnel": {
-      "version": "2.5.0",
-      "from": "sauce-tunnel@>=2.5.0 <2.6.0",
-      "resolved": "https://registry.npmjs.org/sauce-tunnel/-/sauce-tunnel-2.5.0.tgz",
-      "dev": true
-    },
-    "saucelabs": {
-      "version": "1.2.0",
-      "from": "saucelabs@>=1.2.0 <1.3.0",
-      "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.2.0.tgz",
-      "dev": true
-    },
     "semver": {
       "version": "5.3.0",
-      "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0||>=5.0.0 <6.0.0",
+      "from": "semver@>=5.3.0 <6.0.0",
       "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
       "dev": true
     },
-    "send": {
-      "version": "0.15.1",
-      "from": "send@0.15.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.6.1",
-          "from": "debug@2.6.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz",
-          "dev": true
-        },
-        "http-errors": {
-          "version": "1.6.1",
-          "from": "http-errors@>=1.6.1 <1.7.0",
-          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
-          "dev": true
-        },
-        "setprototypeof": {
-          "version": "1.0.3",
-          "from": "setprototypeof@1.0.3",
-          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-          "dev": true
-        }
-      }
-    },
-    "serve-index": {
-      "version": "1.8.0",
-      "from": "serve-index@>=1.7.1 <2.0.0",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.2.0",
-          "from": "debug@>=2.2.0 <2.3.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
-          "dev": true
-        },
-        "ms": {
-          "version": "0.7.1",
-          "from": "ms@0.7.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
-          "dev": true
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.12.1",
-      "from": "serve-static@>=1.10.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.1.tgz",
-      "dev": true
-    },
     "set-blocking": {
       "version": "2.0.0",
       "from": "set-blocking@>=2.0.0 <3.0.0",
@@ -3576,10 +3593,22 @@
       "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
       "dev": true
     },
-    "setprototypeof": {
-      "version": "1.0.2",
-      "from": "setprototypeof@1.0.2",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz",
+    "shebang-command": {
+      "version": "1.2.0",
+      "from": "shebang-command@>=1.2.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "dev": true
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "from": "shebang-regex@>=1.0.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "dev": true
+    },
+    "shell-quote": {
+      "version": "1.6.1",
+      "from": "shell-quote@>=1.6.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
       "dev": true
     },
     "shelljs": {
@@ -3663,9 +3692,9 @@
       "dev": true
     },
     "split": {
-      "version": "1.0.0",
-      "from": "split@>=1.0.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz",
+      "version": "0.3.3",
+      "from": "split@>=0.3.0 <0.4.0",
+      "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
       "dev": true
     },
     "sprintf-js": {
@@ -3675,9 +3704,9 @@
       "dev": true
     },
     "sshpk": {
-      "version": "1.11.0",
+      "version": "1.13.0",
       "from": "sshpk@>=1.7.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.11.0.tgz",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz",
       "dev": true,
       "dependencies": {
         "assert-plus": {
@@ -3688,28 +3717,22 @@
         }
       }
     },
-    "statuses": {
-      "version": "1.3.1",
-      "from": "statuses@>=1.3.1 <1.4.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
-      "dev": true
-    },
     "stdout-stream": {
       "version": "1.4.0",
       "from": "stdout-stream@>=1.4.0 <2.0.0",
       "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
       "dev": true
     },
-    "stream-buffers": {
-      "version": "2.2.0",
-      "from": "stream-buffers@>=2.1.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+    "stream-combiner": {
+      "version": "0.0.4",
+      "from": "stream-combiner@>=0.0.4 <0.1.0",
+      "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
       "dev": true
     },
     "string_decoder": {
-      "version": "0.10.31",
-      "from": "string_decoder@>=0.10.0 <0.11.0",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+      "version": "1.0.0",
+      "from": "string_decoder@>=1.0.0 <1.1.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.0.tgz",
       "dev": true
     },
     "string-width": {
@@ -3718,6 +3741,12 @@
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
       "dev": true
     },
+    "string.prototype.padend": {
+      "version": "3.0.0",
+      "from": "string.prototype.padend@>=3.0.0 <4.0.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+      "dev": true
+    },
     "stringstream": {
       "version": "0.0.5",
       "from": "stringstream@>=0.0.4 <0.1.0",
@@ -3780,18 +3809,6 @@
       "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
       "dev": true
     },
-    "tar-stream": {
-      "version": "1.5.2",
-      "from": "tar-stream@>=1.5.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz",
-      "dev": true
-    },
-    "temporary": {
-      "version": "0.0.8",
-      "from": "temporary@>=0.0.8 <0.0.9",
-      "resolved": "https://registry.npmjs.org/temporary/-/temporary-0.0.8.tgz",
-      "dev": true
-    },
     "tether": {
       "version": "1.4.0",
       "from": "tether@>=1.4.0 <2.0.0",
@@ -3827,44 +3844,6 @@
       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
       "dev": true
     },
-    "time-grunt": {
-      "version": "1.4.0",
-      "from": "time-grunt@>=1.4.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz",
-      "dev": true
-    },
-    "time-zone": {
-      "version": "0.1.0",
-      "from": "time-zone@>=0.1.0 <0.2.0",
-      "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz",
-      "dev": true
-    },
-    "tiny-lr": {
-      "version": "0.2.1",
-      "from": "tiny-lr@>=0.2.1 <0.3.0",
-      "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "debug": {
-          "version": "2.2.0",
-          "from": "debug@>=2.2.0 <2.3.0",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
-          "dev": true
-        },
-        "ms": {
-          "version": "0.7.1",
-          "from": "ms@0.7.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
-          "dev": true
-        },
-        "qs": {
-          "version": "5.1.0",
-          "from": "qs@>=5.1.0 <5.2.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz",
-          "dev": true
-        }
-      }
-    },
     "to-fast-properties": {
       "version": "1.0.2",
       "from": "to-fast-properties@>=1.0.1 <2.0.0",
@@ -3896,9 +3875,9 @@
       "dev": true
     },
     "tunnel-agent": {
-      "version": "0.4.3",
-      "from": "tunnel-agent@>=0.4.1 <0.5.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+      "version": "0.6.0",
+      "from": "tunnel-agent@>=0.6.0 <0.7.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
       "dev": true
     },
     "tweetnacl": {
@@ -3914,12 +3893,6 @@
       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
       "dev": true
     },
-    "type-is": {
-      "version": "1.6.14",
-      "from": "type-is@>=1.6.10 <1.7.0",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz",
-      "dev": true
-    },
     "typedarray": {
       "version": "0.0.6",
       "from": "typedarray@>=0.0.6 <0.0.7",
@@ -3927,9 +3900,9 @@
       "dev": true
     },
     "uglify-js": {
-      "version": "2.8.14",
-      "from": "uglify-js@>=2.8.14 <3.0.0",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.14.tgz",
+      "version": "2.8.22",
+      "from": "uglify-js@>=2.8.22 <3.0.0",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.22.tgz",
       "dev": true,
       "dependencies": {
         "camelcase": {
@@ -3968,7 +3941,8 @@
       "version": "1.0.2",
       "from": "uglify-to-browserify@>=1.0.0 <1.1.0",
       "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "unc-path-regex": {
       "version": "0.1.2",
@@ -3976,22 +3950,40 @@
       "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
       "dev": true
     },
-    "underscore.string": {
-      "version": "3.2.3",
-      "from": "underscore.string@>=3.2.3 <3.3.0",
-      "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz",
+    "unicode-canonical-property-names": {
+      "version": "1.0.3",
+      "from": "unicode-canonical-property-names@>=1.0.3 <2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names/-/unicode-canonical-property-names-1.0.3.tgz",
       "dev": true
     },
-    "unpipe": {
-      "version": "1.0.0",
-      "from": "unpipe@>=1.0.0 <1.1.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+    "unicode-match-property": {
+      "version": "0.1.3",
+      "from": "unicode-match-property@>=0.1.3 <0.2.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property/-/unicode-match-property-0.1.3.tgz",
+      "dev": true
+    },
+    "unicode-match-property-value": {
+      "version": "1.0.2",
+      "from": "unicode-match-property-value@>=1.0.2 <2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value/-/unicode-match-property-value-1.0.2.tgz",
+      "dev": true
+    },
+    "unicode-property-aliases": {
+      "version": "1.1.1",
+      "from": "unicode-property-aliases@>=1.1.0 <2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases/-/unicode-property-aliases-1.1.1.tgz",
+      "dev": true
+    },
+    "unicode-property-value-aliases": {
+      "version": "1.2.2",
+      "from": "unicode-property-value-aliases@>=1.2.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-value-aliases/-/unicode-property-value-aliases-1.2.2.tgz",
       "dev": true
     },
     "user-home": {
-      "version": "2.0.0",
-      "from": "user-home@>=2.0.0 <3.0.0",
-      "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
+      "version": "1.1.1",
+      "from": "user-home@>=1.1.1 <2.0.0",
+      "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
       "dev": true
     },
     "util-deprecate": {
@@ -4000,18 +3992,18 @@
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
       "dev": true
     },
-    "utils-merge": {
-      "version": "1.0.0",
-      "from": "utils-merge@1.0.0",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
-      "dev": true
-    },
     "uuid": {
       "version": "3.0.1",
       "from": "uuid@>=3.0.0 <4.0.0",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
       "dev": true
     },
+    "v8flags": {
+      "version": "2.0.12",
+      "from": "v8flags@>=2.0.10 <3.0.0",
+      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.12.tgz",
+      "dev": true
+    },
     "validate-npm-package-license": {
       "version": "3.0.1",
       "from": "validate-npm-package-license@>=3.0.1 <4.0.0",
@@ -4024,34 +4016,16 @@
       "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
       "dev": true
     },
-    "walkdir": {
-      "version": "0.0.11",
-      "from": "walkdir@>=0.0.11 <0.0.12",
-      "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
-      "dev": true
-    },
-    "websocket-driver": {
-      "version": "0.6.5",
-      "from": "websocket-driver@>=0.5.1",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
-      "dev": true
-    },
-    "websocket-extensions": {
-      "version": "0.1.1",
-      "from": "websocket-extensions@>=0.1.1",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz",
-      "dev": true
-    },
-    "when": {
-      "version": "3.7.8",
-      "from": "when@>=3.7.5 <3.8.0",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
+    "walk-sync": {
+      "version": "0.3.1",
+      "from": "walk-sync@0.3.1",
+      "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.1.tgz",
       "dev": true
     },
     "which": {
-      "version": "1.2.12",
-      "from": "which@>=1.2.1 <1.3.0",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz",
+      "version": "1.2.14",
+      "from": "which@>=1.2.12 <2.0.0",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
       "dev": true
     },
     "which-module": {
@@ -4124,41 +4098,19 @@
       "version": "6.6.0",
       "from": "yargs@>=6.6.0 <7.0.0",
       "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
-      "dev": true,
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "from": "camelcase@>=3.0.0 <4.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "dev": true
-        }
-      }
+      "dev": true
     },
     "yargs-parser": {
       "version": "4.2.1",
       "from": "yargs-parser@>=4.2.0 <5.0.0",
       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
-      "dev": true,
-      "dependencies": {
-        "camelcase": {
-          "version": "3.0.0",
-          "from": "camelcase@>=3.0.0 <4.0.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
-          "dev": true
-        }
-      }
+      "dev": true
     },
     "yauzl": {
       "version": "2.4.1",
       "from": "yauzl@2.4.1",
       "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
       "dev": true
-    },
-    "zip-stream": {
-      "version": "1.1.1",
-      "from": "zip-stream@>=1.1.0 <2.0.0",
-      "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.1.1.tgz",
-      "dev": true
     }
   }
 }
diff --git a/grunt/postcss.config.js b/build/postcss.config.js
similarity index 100%
rename from grunt/postcss.config.js
rename to build/postcss.config.js
diff --git a/grunt/sauce_browsers.yml b/build/sauce_browsers.yml
similarity index 100%
rename from grunt/sauce_browsers.yml
rename to build/sauce_browsers.yml
diff --git a/build/stamp.js b/build/stamp.js
new file mode 100644
index 0000000000000000000000000000000000000000..c0dfdeb4176488be32744aa733696660e80590f5
--- /dev/null
+++ b/build/stamp.js
@@ -0,0 +1,40 @@
+const fs = require('fs')
+
+fs.readFile('package.json', (err, data) => {
+  if (err) throw err
+
+  const pkg = JSON.parse(data)
+  const year = new Date().getFullYear()
+
+  const stampTop =
+`/*!
+ * Bootstrap v${pkg.version} (${pkg.homepage})
+ * Copyright 2011-${year} ${pkg.author} 
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+if (typeof jQuery === 'undefined') {
+  throw new Error('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')
+}
+
+(function ($) {
+  var version = $.fn.jquery.split(' ')[0].split('.')
+  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {
+    throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
+  }
+})(jQuery);
+
+(function () {
+`
+  const stampEnd = `
+})()`
+
+  process.stdout.write(stampTop)
+
+  process.stdin.on('end', () => {
+    process.stdout.write(stampEnd);
+  });
+
+  process.stdin.pipe(process.stdout)
+})
+
diff --git a/build/upload-preview.sh b/build/upload-preview.sh
new file mode 100755
index 0000000000000000000000000000000000000000..08edc35178b65edf3a44e107622cecd34da3954c
--- /dev/null
+++ b/build/upload-preview.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Upload built docs to preview.twbsapps.com
+
+# Add build metadata to version
+sed -i "/^current_version:/ s/\$/+pr.${TRAVIS_COMMIT}/" _config.yml
+bundle exec jekyll build --destination "$TRAVIS_COMMIT" --baseurl "/c/${TRAVIS_COMMIT}"
+
+openssl aes-256-cbc -K $encrypted_2b749c8e6327_key -iv $encrypted_2b749c8e6327_iv -in build/gcp-key.json.enc -out build/gcp-key.json -d
+gcloud auth activate-service-account "$GCP_SERVICE_ACCOUNT" --key-file build/gcp-key.json &> /dev/null || (echo 'GCP login failed!'; exit 1)
+
+echo "Uploading to http://preview.twbsapps.com/c/${TRAVIS_COMMIT} ..."
+time gsutil -q -m cp -z html,css,js,svg -r "./${TRAVIS_COMMIT}" gs://preview.twbsapps.com/c/
+echo 'Done.'
diff --git a/grunt/upload-preview.sh b/grunt/upload-preview.sh
deleted file mode 100755
index 08e7fa2efd869747e6fba9e7de8b3149852dcf2c..0000000000000000000000000000000000000000
--- a/grunt/upload-preview.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-# Upload built docs to preview.twbsapps.com
-
-if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ]; then exit 0; fi
-
-# Add build metadata to version
-sed -i "/^current_version:/ s/\$/+pr.${TRAVIS_COMMIT}/" _config.yml
-# Fix URLs since the site's root is now a subdirectory
-bundle exec jekyll build --destination "$TRAVIS_COMMIT" --baseurl "/c/${TRAVIS_COMMIT}"
-
-# Install gcloud & gsutil
-GSUTIL_VERSION=$(gsutil version | cut -d ' ' -f 3)
-if [ ! -d "${HOME}/google-cloud-sdk" ] || [ "${GSUTIL_VERSION}" != '4.19' ]; then
-  rm -rf "${HOME}/google-cloud-sdk" # Kill Travis' outdated non-updateable preinstalled version
-  echo 'Installing google-cloud-sdk...'
-  export CLOUDSDK_CORE_DISABLE_PROMPTS=1
-  time (curl -S -s https://sdk.cloud.google.com | bash &>/dev/null)
-  echo 'Done.'
-fi
-source "${HOME}/google-cloud-sdk/path.bash.inc"
-
-openssl aes-256-cbc -K $encrypted_2b749c8e6327_key -iv $encrypted_2b749c8e6327_iv -in grunt/gcp-key.json.enc -out grunt/gcp-key.json -d
-gcloud auth activate-service-account "$GCP_SERVICE_ACCOUNT" --key-file grunt/gcp-key.json &> /dev/null || (echo 'GCP login failed!'; exit 1)
-
-echo "Uploading to http://preview.twbsapps.com/c/${TRAVIS_COMMIT} ..."
-time gsutil -q -m cp -z html,css,js,svg -r "./${TRAVIS_COMMIT}" gs://preview.twbsapps.com/c/
-echo 'Done.'
diff --git a/js/tests/unit/phantom.js b/js/tests/unit/phantom.js
deleted file mode 100644
index eea7486a43e71739c295a4b369f0c6f35e756b2d..0000000000000000000000000000000000000000
--- a/js/tests/unit/phantom.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * grunt-contrib-qunit
- * http://gruntjs.com/
- *
- * Copyright (c) 2014 "Cowboy" Ben Alman, contributors
- * Licensed under the MIT license.
- */
-
-(function () {
-  'use strict'
-
-  // Don't re-order tests.
-  QUnit.config.reorder = false
-  // Run tests serially, not in parallel.
-  QUnit.config.autorun = false
-
-  // Send messages to the parent PhantomJS process via alert! Good times!!
-  function sendMessage() {
-    var args = [].slice.call(arguments)
-    alert(JSON.stringify(args))
-  }
-
-  // These methods connect QUnit to PhantomJS.
-  QUnit.log(function (obj) {
-    // What is this I don’t even
-    if (obj.message === '[object Object], undefined:undefined') { return }
-
-    // Parse some stuff before sending it.
-    var actual
-    var expected
-    if (!obj.result) {
-      // Dumping large objects can be very slow, and the dump isn't used for
-      // passing tests, so only dump if the test failed.
-      actual = QUnit.dump.parse(obj.actual)
-      expected = QUnit.dump.parse(obj.expected)
-    }
-    // Send it.
-    sendMessage('qunit.log', obj.result, actual, expected, obj.message, obj.source)
-  })
-
-  QUnit.testStart(function (obj) {
-    sendMessage('qunit.testStart', obj.name)
-  })
-
-  QUnit.testDone(function (obj) {
-    sendMessage('qunit.testDone', obj.name, obj.failed, obj.passed, obj.total, obj.duration)
-  })
-
-  QUnit.moduleStart(function (obj) {
-    sendMessage('qunit.moduleStart', obj.name)
-  })
-
-  QUnit.moduleDone(function (obj) {
-    if (obj.failed === 0) {
-      console.log('\r\u221A All tests passed in "' + obj.name + '" module')
-    } else {
-      console.log('\u00D7 ' + obj.failed + ' tests failed in "' + obj.name + '" module')
-    }
-    sendMessage('qunit.moduleDone', obj.name, obj.failed, obj.passed, obj.total)
-  })
-
-  QUnit.begin(function () {
-    sendMessage('qunit.begin')
-    console.log('\n\nStarting test suite')
-    console.log('================================================\n')
-  })
-
-  QUnit.done(function (obj) {
-    sendMessage('qunit.done', obj.failed, obj.passed, obj.total, obj.runtime)
-  })
-
-}())
diff --git a/package.json b/package.json
index 7d2f2d893171d49cd575a11ca4cef978c7e43bdd..e7ec5afe0e16cf5c0cffec6153bd5bcada4d6b8c 100644
--- a/package.json
+++ b/package.json
@@ -17,24 +17,40 @@
     "Twitter, Inc."
   ],
   "scripts": {
-    "change-version": "node grunt/change-version.js",
-    "clean-css": "cleancss --level 1 --source-map --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss --level 1 --source-map --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss --level 1 --source-map --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css",
-    "clean-css-docs": "cleancss --level 1 --source-map --output docs/assets/css/docs.min.css docs/assets/css/docs.min.css",
-    "eslint": "eslint --ignore-path .eslintignore js && eslint --config js/tests/.eslintrc.json --env node grunt Gruntfile.js && eslint --config js/tests/.eslintrc.json docs/assets/js/src docs/assets/js/ie-emulation-modes-warning.js docs/assets/js/ie10-viewport-bug-workaround.js",
-    "htmlhint": "htmlhint --config docs/.htmlhintrc _gh_pages/",
-    "htmllint": "htmllint --rc docs/.htmllintrc _gh_pages/**/*.html js/tests/visual/*.html",
-    "jekyll": "bundle exec jekyll build",
-    "jekyll-github": "shx echo 'github: true' > $npm_config_tmp/twbsjekyll.yml && npm run jekyll -- --config _config.yml,$npm_config_tmp/twbsjekyll.yml && shx rm $npm_config_tmp/twbsjekyll.yml",
-    "postcss": "postcss --config grunt/ --replace dist/css/*.css",
-    "postcss-docs": "postcss --config grunt/ --replace docs/assets/css/docs.min.css && postcss --config grunt/ --replace docs/examples/**/*.css",
-    "sass": "node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css",
-    "sass-docs": "node-sass --output-style expanded --source-map true --precision 6 docs/assets/scss/docs.scss docs/assets/css/docs.min.css",
-    "scss-lint": "bundle exec scss-lint --config scss/.scss-lint.yml scss/*.scss",
-    "scss-lint-docs": "bundle exec scss-lint --config scss/.scss-lint.yml --exclude docs/assets/scss/docs.scss docs/assets/scss/*.scss",
-    "uglify": "uglifyjs --compress warnings=false --mangle --comments '/^!/' --output dist/js/bootstrap.min.js dist/js/bootstrap.js",
-    "uglify-docs": "uglifyjs --compress warnings=false --mangle --comments '/^!/' --output docs/assets/js/docs.min.js docs/assets/js/vendor/anchor.min.js docs/assets/js/vendor/clipboard.min.js docs/assets/js/vendor/holder.min.js docs/assets/js/src/application.js",
-    "update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json",
-    "test": "npm run eslint && grunt test"
+    "bash": "bash",
+    "css": "npm-run-all css-lint css-compile css-prefix css-minify",
+    "css-docs": "npm-run-all css-lint-docs css-compile-docs css-prefix-docs css-minify-docs",
+    "css-lint": "bundle exec scss-lint --config scss/.scss-lint.yml scss/*.scss",
+    "css-lint-docs": "bundle exec scss-lint --config scss/.scss-lint.yml --exclude docs/assets/scss/docs.scss docs/assets/scss/*.scss",
+    "css-compile": "node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css",
+    "css-compile-docs": "node-sass --output-style expanded --source-map true --precision 6 docs/assets/scss/docs.scss docs/assets/css/docs.min.css",
+    "css-prefix": "postcss --config build/ --replace dist/css/*.css",
+    "css-prefix-docs": "postcss --config build/ --no-map --replace docs/assets/css/docs.min.css docs/examples/**/*.css",
+    "css-minify": "cleancss --level 1 --source-map --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss --level 1 --source-map --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss --level 1 --source-map --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css",
+    "css-minify-docs": "cleancss --level 1 --source-map --output docs/assets/css/docs.min.css docs/assets/css/docs.min.css",
+    "js": "npm-run-all js-compile js-minify",
+    "js-docs": "npm-run-all js-lint-docs js-minify-docs",
+    "js-lint": "eslint js/ && eslint --config js/tests/.eslintrc.json --env node build/",
+    "js-lint-docs": "eslint --config js/tests/.eslintrc.json docs/assets/js/",
+    "js-compile": "npm-run-all --parallel js-compile-*",
+    "js-compile-bundle": "shx cat js/src/util.js js/src/alert.js js/src/button.js js/src/carousel.js js/src/collapse.js js/src/dropdown.js js/src/modal.js js/src/scrollspy.js js/src/tab.js js/src/tooltip.js js/src/popover.js | shx sed 's/^(import|export).*//' | babel --filename js/src/bootstrap.js | node build/stamp.js > dist/js/bootstrap.js",
+    "js-compile-plugins": "babel js/src/ --out-dir js/dist/ --source-maps",
+    "js-minify": "uglifyjs --compress warnings=false --mangle --comments '/^!/' --output dist/js/bootstrap.min.js dist/js/bootstrap.js",
+    "js-minify-docs": "uglifyjs --compress warnings=false --mangle --comments '/^!/' --output docs/assets/js/docs.min.js docs/assets/js/vendor/anchor.min.js docs/assets/js/vendor/clipboard.min.js docs/assets/js/vendor/holder.min.js docs/assets/js/src/application.js",
+    "js-test": "phantomjs ./node_modules/qunit-phantomjs-runner/runner.js js/tests/index.html 60",
+    "js-test-cloud": "ruby -run -ehttpd . -p3000 & grunt saucelabs-qunit",
+    "docs": "npm-run-all docs-compile docs-lint",
+    "docs-lint": "htmlhint --config docs/.htmlhintrc _gh_pages/ js/tests/visual/ && htmllint --rc docs/.htmllintrc _gh_pages/*.html _gh_pages/**/*.html js/tests/visual/*.html",
+    "docs-clean": "shx rm -r docs/dist/* && shx cp -r dist/* docs/dist/",
+    "docs-compile": "npm run docs-clean && bundle exec jekyll build",
+    "docs-serve": "npm run docs-clean && bundle exec jekyll serve",
+    "docs-github": "shx echo 'github: true' > $npm_config_tmp/twbsconfig.yml && npm run docs-compile -- --config _config.yml,$npm_config_tmp/twbsconfig.yml && shx rm $npm_config_tmp/twbsconfig.yml",
+    "docs-upload-preview": "build/upload-preview.sh",
+    "maintenance-dependencies": "ncu -a -x jquery && bundle update && shx echo 'Manually update docs/assets/js/vendor/*, js/tests/vendor/*, bower.json and .travis.yml'",
+    "maintenance-shrinkwrap": "npm shrinkwrap --dev && shx mv npm-shrinkwrap.json build/npm-shrinkwrap.json",
+    "release-version": "node build/change-version.js",
+    "release-zip": "cd dist/ && zip -r9 bootstrap-$npm_package_version-dist.zip * && shx mv bootstrap-$npm_package_version-dist.zip ..",
+    "test": "npm-run-all --parallel css js && npm-run-all docs"
   },
   "style": "dist/css/bootstrap.css",
   "sass": "scss/bootstrap.scss",
@@ -53,42 +69,39 @@
   },
   "devDependencies": {
     "autoprefixer": "^6.7.7",
-    "babel-eslint": "^7.1.1",
-    "babel-plugin-transform-es2015-modules-strip": "^0.1.0",
-    "babel-preset-es2015": "^6.24.0",
-    "clean-css-cli": "^4.0.9",
-    "eslint": "^3.18.0",
+    "babel-cli": "^6.24.1",
+    "babel-eslint": "^7.2.2",
+    "babel-plugin-transform-es2015-modules-strip": "^0.1.1",
+    "babel-preset-es2015": "^7.0.0-alpha.7",
+    "clean-css-cli": "^4.0.12",
+    "eslint": "^3.19.0",
     "grunt": "^1.0.1",
-    "grunt-babel": "^6.0.0",
-    "grunt-build-control": "^0.7.1",
-    "grunt-contrib-clean": "^1.0.0",
-    "grunt-contrib-compress": "^1.4.1",
-    "grunt-contrib-concat": "^1.0.1",
-    "grunt-contrib-connect": "^1.0.2",
-    "grunt-contrib-copy": "^1.0.0",
-    "grunt-contrib-qunit": "^1.3.0",
-    "grunt-contrib-watch": "^1.0.0",
-    "grunt-exec": "^2.0.0",
     "grunt-saucelabs": "^9.0.0",
-    "grunt-stamp": "^0.3.0",
     "htmlhint": "^0.9.13",
     "htmllint-cli": "^0.0.6",
-    "is-travis": "^1.0.0",
-    "load-grunt-tasks": "^3.5.2",
-    "node-sass": "^4.5.0",
-    "postcss-cli": "^3.0.0",
-    "postcss-flexbugs-fixes": "^2.1.0",
+    "node-sass": "^4.5.2",
+    "npm-run-all": "^4.0.2",
+    "phantomjs-prebuilt": "^2.1.14",
+    "postcss-cli": "^3.1.1",
+    "postcss-flexbugs-fixes": "^2.1.1",
+    "qunit-phantomjs-runner": "^2.3.0",
+    "qunitjs": "^2.3.1",
     "shelljs": "^0.7.7",
     "shx": "^0.2.2",
-    "time-grunt": "^1.4.0",
-    "uglify-js": "^2.8.14"
+    "uglify-js": "^2.8.22"
   },
   "engines": {
     "node": ">=4"
   },
   "files": [
+    ".babelrc",
+    ".eslintignore",
+    "Gruntfile.js",
     "dist",
+    "build",
+    "js/.eslintrc.json",
     "js/**/*.js",
+    "scss/.scss-lint.yml",
     "scss/**/*.scss",
     "LICENSE"
   ],