Added dict-copy operation.

Similar to hash-copy or string-copy, creates a new, mutable copy of the given
dictionary.  Added as a method of gen:dict.
Added gen:set, mutable and weak sets, and custom set types.

Sets are now implemented as a generic interface, and lists count as sets.  Most
of the set functions have been added as methods, including mutable versions of
imperative update methods.
Added tests for mutable, weak, and custom sets.