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.
seemingly premature optimization that's helped me a lot in the past with long tables ike these: dictionary-encode the strings.

if there's a namespace table and a stream name table, each of them can map the string value to an int, and then you only have to refer to the primary key in teh events table.