Add "difference" collection method

Seeing as "without" is already included and "difference" is just a different API
for without, I see no reason for not adding it. Prior to this commit, one would
have to do `collection.without.apply(collection, other.models)` which is
definitely not as nice as `collection.difference(other.models)`. Useful for
cases like `availableSeats = allSeats.difference(reservedSeats.models)`.
Ensure Collection#get does not return a false negative during the change:attr event
Merge pull request #2602 from caseywebdev/fallback-get

Ensure Collection#get does not return a false negative during the change:attr event