Add a convenience constructor for use with lists.
Reorganize and add new tests.
Add support for a default idFn if none is specified
Add an alter that takes a map.
Add alter support for sets
Add empty map tests.