Fix substitution when switchValue changes more than once

The switchElements wasn't being updated correctly when switchValue changed more than once between draws.
Add montage-InputRange--active class
Stop waiting on resource preloading to load a template

We were waiting for all resources to be loaded before considering the template loaded.
Since we need the template to be loaded in order to load the rest of the component tree this turns the loading of each component tree level into a serial operation.
This is particularly bad for mobile devices like the iPad where the network connection is a bottleneck making the application load very slowly.
We need to adopt a different strategy where the resources can be loaded in parallel, for now we preload the resources but don't wait for them.
Add createTemplateFromElement to template

and refactor common code from createTemplateFromElementContents
into createTemplateFromRange
Add axis support
Fix findAndDetachComponents to work with non-Element Nodes

If the value is not an Element we assume it's an array, this fails for TextNodes. Add additional check to make sure we can read it as an array.
Stop loading substitution content before firstDraw

- Stop loading content before the firstDraw, enterDocument is now called even if the component didn't request to draw. The substitution loads its content at the first enterDocument, this is because the switchElements are only ready by that time.

- If the substitution switchValue changed in a way that in the next draw it's going to draw the same element then we should just draw what's in the document and not what's in the switchElements because the element in the document might have changed (a component that changed its element to its template).
Fix AbstractInputRange tests
Reset duration to 0 on stop()
Discard current poster when new one is not given
Remove unused file
fix issue with relative path
Add event blueprints
Add event blueprint blueprint
Fix the event blueprint
Swap Montage and application requires around in bootstrap

So that Montage is loaded with the application require, instead of
vice versa.

This fixes the issue where if an application and Montage depend on
the same package, npm would (correctly) install it in the
application's node_modules but, because the montage package was loaded
first, Montage would try and use a version in its node_modules.
Add removeChildComponent to DocumentPart
attachToParentComponent detaches the component first
Add originalElement property for enterDocument

The originalElement is the element set on the component and is only available for the first time enterDocument is called.
Remove usage of willPrepareForDraw