Support auto-copying enumeratable objects (arrays, sets, dictionaries) etc.

This very hacky solution intercepts a copy when the object being copied
conforms to <NSFastEnumeration> (as well as implementing either
Array-type addObject: or Dictionary-type setObject:forKey:
-methods), and instead of returning a mutable copy of the object (which
would force all members of the collection to conform to <NSCopying>),
enumerates it and auto-copies its members, then inserts them in either
an Array-like or Dictionary-like fashion.
Run block when auto copying dictionary members
Document collection-type auto copy behavior
Merge branch 'johnsundell/collections'

* df03b5 Support auto-copying enumeratable objects (arrays, sets, dictionaries) etc.
* 6ea6e8 Run block when auto copying dictionary members
* 4e396e Document collection-type auto copy behavior