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.
Since we want to maintain backwards compatibility if the SQLite backend is going to be used by someone, we should get this change in now. Otherwise we can leave for a later pass.