Add a new SQLite backend

This is lacking the hacky changes I had to make to the test runners since those changes broke all the other backends.
the semantics of `namespace` and `stream` don't preclude two events with the same ID in different namespaces/streams