more set functionality

Implements some extra operations on sets, especially the mutation operators (+=, &=, etc).  Also split each type on its own file, inheriting from a common class. hashes also got a few enhancements.