Add failing specs for RangeController

for calls to range change listeners when using multiSelect = false,
and using the selection of one RangeController as the content of
another.
Initial approach to fixing rangeController selection.

- Selection is always an array and is not settable. Uses Stuk's splice duck-punch to maintain invariants.
- Does not yet guarantee uniqueness, but can be made to do so.
- RangeController tests pass, with the ones that directly set the selection removed.
- Other tests, including AbstractSelect, fail. Will require code changes there now that selection is non-settable.
Fix AbstractSelect to work with new RangeController.

- Depends on frb#31 and frb#32.
- Adds some new tests and makes existing ones pass under the new restriction that RangeController#selection must be modified in-place.
Remove debug code.
Add tests for negative inputs to RangeController selection splice
RangeController#selection: Add documentation for RangeSelection and protect its custom splice method from enumerating or being changed.
Merge branch 'range-controller-fix' of https://github.com/Stuk/montage into range-controller-fix
Fix RangeController's RangeSelection#splice to work with negative offsets.
Merge pull request #1345 from asolove/range-controller-fix

Range controller fix