* feat(build): ES6 with babel
For development, ES6 files are converted to ES5 via a middleware.
For production, ES6 files are converted to ES5 and stored in a `.es5` directory
as a staging area. The ES5 files are then used by requirejs for the final
build.
* feat(server): Use newest babel-middleware.
It supports logging parse errors to the console.
* feat(server): Use the newest babel-middleware which supports disk caching
r=@philbooth
* Generate copies of static pages for each locale. Replace links to localized resources (like CSS) with their prebuilt equivalent.
* Generate one CSS bundle per locale. The CSS bundle will contain the correct fonts for the locale.
* Serve up the css files based on the user's language.
* Add all locales to the default list of supportedLanguages so production builds can occur before production.json is created.
* Add rev cache-busting to web fonts.
Tangential changes:
* Alphabetize the bower dependencies.
* Run `selectconfig` grunt task earlier. selectconfig adds the server configuration under the `server` namespace in the grunt config.
* Add `configure_connect_fonts` which configures the languages to use in the `connect_fonts` task.
* Add a 'helper' configuration item: `are_dist_resources` - returns `true` if using dist resources.
* Add `i18n.normalizeLocale` and `i18n.normalizeLanguage`
* Use grunt-preprocess to do the pre-processing.
* Add a selectconfig task which will select the appropriate config file to use.
** if process.env.CONFIG_FILES is specified, use that.
** use production.json when building dist resources.
** local.json by default