Improve Exts.Random by testing if the input sequence is a collection, thus avoiding the need to create a copy to get the count.

Using the ElementAt method also means that if the sequence is a list too, then the selection can be done via the indexer rather the enumerating the elements.
Merge pull request #5985 from RoosterDragon/random-try-collection

Improve Exts.Random