Fixes input-range being dragged too far
Add functional reactive bindings

This only adds FRB as a dependency and adds its test suite to Montage’s
integration tests.  As a result, this puts us in a position to verify
that FRB at least does not interfere with the operation of the rest of
Montage.

Integration of FRB for Montage’s own change listeners and bindings
forthcoming.
Add path change listener
Promote path change from Montage to Object

Also make cancelation stack with nested path changes.
Spec nested path and range change listeners
Spec for connected nested path and range change
Reimplement selector with FRB
Deprecate document.application

require("montage/ui/application").application should be used instead.
Use full method name for path change listener arg
Depend on Montage in path changes
Use semantic versioning for dependencies
Replace bindings implementation with FRB

Added:

-   Serialization handlers for Bindings units using FRB and gracefully coercing
    deprecated forms, and specification for that feature.
    -   core/serialization-bindings.js
    -   test/serialization/bindings-spec.js

Removed:

-   Dependent properties are gone with this change.  All usage of dependent
    properties must migrate to using FRB computed properties.
        TODO I have not done a scan of the codebase to either migrate or
        catalog necessary migrations.

-   Object.prototype.getProperty
    Object.prototype.setProperty
        These methods have been removed in favor of:
            Use "get" and "set" for collections and arrays.
            Use "addOwnPropertyChangeListener" for property changes.
            Use "addPathChangeListener" for complex paths.

Broken:

-   Repetition and ArrayController need to be rewritten to support the new
    Bindings.
-   RichTextEditor because ChangeNotification has gone away.  This needs to be
    migrated to using Collections/FRB change dispatch.
-   propertyChangeBindingListener is no longer supported.  It is found in the
    following modules:
    -   ui/bluemoon/tabs.reel/tabs.js
    -   ui/flow.reel/flow.js
    -   ui/list.reel/list.js
    -   ui/repetition.reel/repetition.js
-   getProperty, setProperty, undefinedGet, and undefinedSet have all been torn out.
    Undefined get and set are used in the following modules:
    -   ui/dynamic-element.reel/dynamic-element.js
    -   ui/native/button.reel/button.js
    -   ui/repetition.reel/repetition.js

Migrated:

-   I've removed Array extras entirely.  This job has been taken over by the
    Collections shims.
-   Bindings are now a static dependency of Montage core.  This obviates the
    need to conditionally load it in Montage bootstrapping.
-   Replaced all occurrences of "count()" with "length" in both JavaScript and
    property paths.  Count is no longer supported because Collections permits
    direct observation of the length property and FRB explicitly separates
    observation of a direct property from a mapped property.
    -   ui/flow.reel/flow.js
    -   core/undo-manager.js
-   All occurrences of Object.defineBinding and Object.deleteBinding have been
    replaced with Bindings.defineBinding and Bindings.cancelBinding.
    -   ui/autocomplete.reel/autocomplete.js
    -   ui/bluemoon/tabs.reel/tabs.js
    -   ui/native/select.reel/select.js
    -   ui/video-player/video-player.js
    -   test/ui/button-spec.js TODO produces one error (regression)
    -   test/serialization/serializer-spec.js

Tests migrated:

-   bindings/definebinding-spec -> bindings/spec
        Deferred bindings specs have been removed.  Deferred bindings are not
        supported at this time.  I found no uses of deferred bindings within
        Montage.
-   binding/self-binding-spec -> bindings/self-spec
    bindings/converter-spec -> bindings/converter-spec
        These specs passed before migration, but had deprecation warnings.
        I've renamed them and migrated their usage pattern to the new form,
        although the old forms are supported for migration purposes.
-   bindings/dependent-properties-spec -> deleted
        I've removed support for dependent properties.
-   array-spec -> deleted
        The Collections package subsumes this responsibility.
-   core/core-spec
        I've removed the tests for deprecated getProperty and setProperty.
        This role is now played by Collections.
-   core/change-notification-spec -> deleted
    propertychange-spec -> deleted
    getset-spec -> deleted
        Collections takes responsibility for shallow change notifications.
-   serialization specs
        Runs without modification, but decoupled binding descriptor check.  The
        spec was reaching into an implementation detail that changed.
Merge master into WIP integrate-bindings
Call super didCreate
Fix component cancelBindings
First checkpoint for repetition refactor

This begins the refactor of Repetition for the new bindings and
collections.

The following works:

-   A dummy controller that just reflects an objects array on the
    controlled visibleObjects array.
-   A simple list with adding and removing iterations in response to
    changes to the data model.
-   Draw cycle.
-   objectAtCurrentIteration bindings.

This leaves the following important work yet to be done:

-   Test for nested repetitions.
-   Support selection management.
-   Refactor controllers.
-   Refactor flow.
Merge FRB selectors
Support nested repetitions
Refactor selection tracking support for Repetition

This restores the ability to track which iterations of a repetition are
selected.  It uses a chain of bidirectional bindings from the "selected"
property on each iteration in the repetition, to the "selection"
collection in the content controller.
Restore selection gestures to Repetition.

In the course of refactoring Repetition to use FRB, this restores the
"isSelectionEnabled" feature of a Repetition, which allows the selection
of an iteration to be toggled on touch or click.  The "active" property
on each iteration is bidirectionally bound to the content of the
"activeIterations" collection on the repetition.