Optimization for shuffle

dig it or will this have issues with strings in legacy ie?
I was really annoyed when this method got lumped into the Collections category because of poor Underscore documentation and their use of Collections methods internally for it.. grrrrr. This method isn't as popular which is why I've been fine with letting it sit.

Let's keep the PR. For string support you can add this line. Instead of `set` keep `collection` and just do

```js
var length = collection ? collection.length : 0;
if (!(typeof length == 'number' && length > -1 && length <= maxSafeInteger)) {
  collection = values(collection);
} else if (support.unindexedChars && isString(collection)) {
  collection = collection.split('');
}
```