Range controller selection updates

- Fixes a bug that allowed an item to be in the `selection` even if it wasn't in the `content`.
- Enforces uniqueness of items in the `selection`.
- Enforces all of the `selection`'s invariants relative to the `contentEquals` method of its `content`.