This converts the instances of the pattern for which we have a proper
substitution in lit. This will make it easier to replace it
appropriately with Windows equivalents.
This adds a custom index to the variations in collection types in
the collection-combinatorics test. This is important because Int has
properties that make it more powerful as an index, particularly for
random-access collections.
Adding that custom index identified a weird edge-case in macOS for a
non-mutable range replaceable random-access collection with a custom
index where the `DefaultRandomAccessIndices` type doesn’t attach
without a type alias. Linux shows the same behavior with a custom-
indexed random-access collection.
These were overlooked, and somehow code that attempted to make a minimal collection conform to RangeReplaceableCollection and RandomAccessCollection managed to compile successfully in Swift 3.0, but in Swift 3.1…*something* changed to reject a type that conforms to both due to the lack of a suitable default slicing subscript implementation in the stdlib that provided all the requirements. Fill in these missing implementations, fixing rdar://problem/30228957.