[WIP] Support for SQL Server Compact

:cactus: :cactus: :cactus: :cactus: :cactus:  **DO NOT MERGE**  :cactus: :cactus: :cactus: :cactus: :cactus:

I don't know where/when this should be merged in, but I figure I'll get this out early for others to look at.

This is an implementation which uses SQL Server Compact Edition as the backing store. 

I'm trying to keep it similar to how SQLite works, and I don't want to pull in EntityFramework for what's basically just mapping two tables - so I'm doing raw ADO.NET here instead.

Heads up: you can only specify a file path which is <= 128 characters. Go SQL Server CE!

 - [x] the basics around caching and retrieving values
 - [ ] implement all the *Object APIs
 - [ ] encryption support
 - [ ] support for specifying `File Mode=Shared Read;` and `File Mode=Read Only`; in connection strings
 - [ ] support for specifying `Max Buffer Size=1024;` (kB) to control when changes are flushed to disk
 - [ ] move tests into main project
This is also a hilarious known issue with SQL CE. 

You can't use `DateTime.MaxValue`, but the value just before it is perfectly acceptable.