InMemoryStore loads data on demand

- Getting objects, from memory, makes sure they're always synched (so
the full collection of that type is loaded).
- Added stuff to get a list of objects and IDs through the stack
- Dispose once only please, thanks
Fixed failing tests

It seems like they were failing because of leftover DB data, not
anything else. Refactored the tests extensively (no more flaky
stop/reset methods) to use "using." It's simpler, cleaner, and it works.