Check that model exists before trying to verify uniqueness

When calling fetch with {add: false} and model does not exist in
collection, model uniqueness check tries to access id of undefined. This
verifies that model is set before checking for existing models.
Tweak and merge.
A little cleanup of `Collection#set`.

* Remove variable with only one reference.
* Consistent loops.
* Use `#slice` instead of clone when guaranteed array.
Merge pull request #3023 from braddunbar/set-cleanup

A little cleanup of `Collection#set`.