RangeController selection must always be in its content.

- This fixes a bug where, if the only selected item is removed from content, it remained in the collection to avoidEmptySelection. We now pick a random item in the content to replace it in this case.
RangeController's selection enforces uniqueness according to the contentEquals of the content.
Merge pull request #1352 from asolove/range-controller-content-change

Range controller selection updates