Add support for prioritized loading of bundles

An application may now put "bundle" and "shard" properties in its
"package.json" to designate priority order for a sequence of bundles to
preload and the number of parallel connections to harness.  The "bundle"
property must be an array, where each element corresponds to a step in the
loading process.  Each element may be a string or array of strings, and each
string must be a module identifier.  Each step of the preloading phase will
contain these modules and their transitive dependencies, excluding any modules
that were loaded in a previous phase.  The "shard" count is the number of
parallel requests to use within each phase.  The bundle for each phase will be
divided into up to as many shards to load in parallel.

Added a warning not to use the "root" property of a template module’s exports,
favoring instead the "directory" property.  The "root" property accidentally
exposed a regular expression match object instead of a string.  "directory"
matches the terminology used by the "module" object provided by "require".

Promise: add support for .end(callback, errback) for transitioning out of
promise-passing-style to continuation-passing-style.

Revised the bootstrapping code in "montage.js" so that it guarantees that
bindings support has been set up before the application initializes.

Renamed "require.getModule" to "require.getModuleDescriptor".
"require.getModule" exists but is deprecated.
Fix non-bundled optimized applications

They were previously not loading from script-injection as they were
supposed to.
Merge master into bundle2
jsdoc: formatting changes and updates in core.js
jsdoc: correct html in component comment
jsdoc: correct event documentation

in press-composer and native/button
mint: Correct copyright linter
mint: Add JSDoc linter
jsdoc: correct JSDoc for ui/native components
Redesigned Skeleton Overview
Change missing module/name to prototype
Beautify references to elements and bindings in serialization
[gh-905] Avoid label clashes in serialization

The serialization was not taking into account the labels given to serialize() when generating a new label, this was leading to clashes in some cases.
mint: add more checks to jsdoc linter
jsdoc: correct @module, @requires, @class for some components
mint: add command line option to select linters to run
Fix unexpected uppercase filename Expression.js
Merge pull request gh-921 from 'kenwalker/master'

Congratulations on submitting our first (of many hopefully)
public contributions since we've gone open source.
Merge pull request gh-929 from 'stuk/jsdoc-update'
Merge pull request gh-927 from 'simurai/overview'