need an ordered, weak referenced Set object
right now we have HashSet that uses the underlying OrderedDict for an ordered set. the unit of work would benefit from a version of this that stores its values weakly. this would involve either changing OrderedDict or adding a WeakOrderedDict object. using it in the unit-of-work would assist in automatically removing memory-removed objects from the unit of work, preventing the insertion of "ghost" objects.