Add MutableCollection.swapRanges(_: Range<Index>, _: Range<Index>)?

The swapping methods I've tried out all use methods within MutableCollection, so it would be weird to switch between which protocol to conform to. Also, MC allows arbitrary changes to the collection (as long as the count doesn't change). We even have examples as precedent, methods that commit wholesale rearrangement of element values, partition(by:) and reverse() for structured changes and shuffle() as an unstructured one. If we allow those, then something like possibly uneven swapping is relatively OK.

Use of RRC operations necessarily invalidate the indices of all elements of the collection, while MC operations keep the integrity of the element positions outside either targeted subsequence (and the range in-between the targets if they are of the same length). There are also collection types that support only one of the two mutating protocols, so there is a cost right off the bat over miscategorization.

I put my code for this in a gist.