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
[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.
Component always create templateObjects

A component should always have a templateObjects property after loading its template.
Preserve component placeholder data-montage-id and id attributes

Previously the ones from the template were overriding the placeholder when present.
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.
Lazily initializes _COMMANDS to avoid re-creating COMMANDS every time the property is accessed.
minit: correct id to data-montage-id in app template
Merge pull request #957 from eliseosoto/rich-text-editor-commands

Looks good.
Merge pull-request gh-953 from 'stuk/minit-genericize'
Related to gh-945. Removed DOM manipulation outside the draw loop.

- Also fixed the test spec to test after a draw cycle.
mint: add linter for tabs