New Db API

Note: this is branched off #8.

`GetOne<T>()` and `GetMany<T>()` have been replaced with `Get<T>()` that works like `GetMany<T>()` did. The user can choose to call `.Single()` or whatever is appropriate if they expect to receive only one object. The way `GetOne<T>()` worked before (it called `.Single()`) wasn't always the desired behavior. This change gives that control back to the user.

A new `Get()` method adds the ability to retrieve multiple results sets with one call. It returns a `Results` class that has a `Read<T>()` method for retrieving results sets one at a time. The order of the `Read<T>()` calls is important - results must be read in the same order they are proved by the SQL. Example usage is below.

```c#
using (var connection = new SqlConnection("TheConnectionString"))
{
    Results results = Db.Get(connection, "EXECUTE SelectPets");
    Dog[] dogs = results.Read<Dog>();
    Cat[] cats = results.Read<Cat>();
}
```

Both `Get<T>()` and `Results.Read<T>()` support passing `dynamic` as `T` if your use case doesn't warrant a static class (e.g. serializing straight to JSON).

The other `Db` API endpoints, `Db.NonQuery()` and `Db.Scalar()`, were renamed to be more concise, but their functionality is unchanged.

This also adds a `.Sql()` `Task` extension that looks for a .sql file as an embedded resource in a location defined by a convention of having the same name as the corresponding `Task` with `.Tasks.` in the namespace replaced by `.Sql.`

Tasks
- [x] Clean up the commits