Magic emerges from simplicity... (Updates to database creation APIs)

The idea here is to follow a pattern of very simple, very non-magical, commands for the basic operations which can then be composed into more complex operations. The simple commands are:
- Exists: True if database exists; false if it doesn't
- HasTables: True if the database has any tables; false if it doesn't; potentially throw if the database doesn't exist
- Create: Create an empty database or potentially throw if a database with the given name already exists
- Delete: Delete an exist database or potentially throw if the database doesn't exist

None of these commands do existence checking because this has proven to be problematic in many situations and providing these building block commands thus allows the most flexibility for people to get the behavior they need without being dependent on things like exists checks that may not work. For example, you may have some mechanism in your app/infrastructure that tells you this is the first run and therefore the database cannot exist and needs to be created. With these commands this can still be mad to work even if there the exists check we would do does not work with the provider/environment you have.

All that being said, there are two common things that people do, so there are two higher-level composed commands provided out-of-the-box:
- EnsureCreated will create the database if it doesn't exist and create tables for the model if the database doesn't have any tables. It will do nothing if the database exists and has any tables in it.
- EnsureDeleted will delete the database if it exists or do nothing if the database doesn't exist.

SQL Server and In Memory implementations provided and tested, although not yet tested against SQL Azure. SQLite implementation provided but not tested since there are currently no SQLite tests.

See Issue #161
Varying double precision with time zone... (Moved SQL Server-specific type mapping into SQL Server assembly and added tests)

Added tests for type mapping code checked in previously and at the same time moved the SQL Server specific mappings into the SQL Server assembly and checked that providers can override mappings.
Janitorial work... (Two small code cleanups)

1. Call the ServiceCollection.AddXxx methods with fewer generic arguments now that the DI APIs have been updated to allow this.
2. Stop passing in CancellationToken.None where not required because of default argument.
Added APIs to ModelBuilder to be able to construct a model without requiring CLR types.
Updated the CSharpModelCodeGenerator to generated code that uses the new APIs.
Added and updated unit tests.
Rebase to dev. Update datastore creator to match the interface