WIP: Addition/update of various dictionary, set variants

* `OrderedDict` (new)
* `OrderedSet` (new)
* `DefaultDict` (updated)
* `DefaultOrderedDict` (new)

The basic structure is there, but not yet any tests or documentation.  Bugs are likely still lurking...

cc: @toivoh