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
Change classes to match new convention

* Parts of the class are separated by a dash, "-"
* Prefixed with "montage-"
* Component names are CamelCased
* Element tags are lowercase
* States are suffixed to the class with two dashes, "--"

Examples:

montage-TextSlider
montage-TextSlider-input
montage-TextSlider--editing
More class name updates
Move TextSlider editing class into a constant
Remove uneeded class from popup
Correct style in photofx
Change montage--invalid-text to montage--invalidText
Change montage-Flow-pointer-events-none to montage-Flow--pointerEventsNone
Add montage and component prefixes to classes
[gh-945] Make input-range more usabe on mobile

- [gh-944] Remove console log from input-range
- Enhance speed of Kitchen Sinks' color-range chip on chrome mobile
- Add a bigger slider handler to ease drag and drop on mobile
- Avoid changing slider values while dragging outside bar boundaries
Related to gh-945. Performance improvements to InputRange on Mobile iOS/Android Chrome.
Improvement to fix for gh-945. 

- On touch devices, handle translate only if touch is on the knob.
minit: make component template more generic

Allows the user to specify the JSDoc module for file and the
copyright statement to be prepended to all files.

The Montage license has been added in tools/minit/montage-license.txt
and a Montage component can be created using:

./tools/minit/minit component <name> montage tools/minit/montage-license.txt
minit: make app template more generic

Allow the user to specify the copyright statement to be prepended
to all files
Related to gh-945. Usability Improvements to InputRange

- Calculate knob size instead of using HANDLE_ADJUST
- Handle browser resize issue. 
- Removed use of _sliderLeft
- Increase knob size
- Remove _getElementPosition. Not used anymore.
Fixes a bug with COMMANDS. `command.method` was always null because this._methodName was not defined yet.
Fixes a typo in the listStyle getter.
Merge pull request #956 from aadsm/bug-fixes

Bug fixes
Add multi-window application support

Add notion of a Montage Window object to represent the window,
moved most of the multiple-window logics from the Application
into the Window Object.

Also create multi-window sample app in lab

This includes the changes from the pull request gh-935,
implementing features from gh-314.