[WIP] In-memory storage implementation
This is a very work in progress in-memory storage implementation, to help discussion around #1306 (closed) and !109 (closed).
The test data refactoring should be split off in another diff but the scaffolding is really starting to get painful.
Test Plan
Some of the (easy) tests pass; for now all tests are marked xfail, use pytest --runxfail to show tracebacks and try to fix them.
Migrated from D635 (view on Phabricator)