Phase 1 of adding asset metadata saving to old Mongo

@dmitchell @cpennington Here's the first phase of my work. Look at the tests to see what is implemented and what isn't yet.
Not to be ornery, but do you have a reason for overriding `__repr__` here and above?

Less ornery, I believe if you override `__eq__` you should possibly override some of the other comparison functions (e.g., `__hash__`,` __ne__` and possibly the sorting ones). I know I got bit by this. (https://docs.python.org/2/reference/datamodel.html)
>There are no implied relationships among the comparison operators. The truth of x==y does not imply that x!=y is false. Accordingly, when defining __eq__(), one should also define __ne__() so that the operators will behave as expected. See the paragraph on __hash__() for some important notes on creating hashable objects which support custom comparison operations and are usable as dictionary keys.