Basic implementation of action monad and asynchronous execution engine:

- Query, insert, update, delete and schema actions implemented in
  JdbcProfile.

- Query, insert and schema actions implemented in MemoryProfile.

- Query actions implemented in DistributedDriver. This is not an
  optimized implementation based on non-blocking primitives. We simply
  wrap the existing blocking calls and run them inside of
  Future(blocking(...)) in the global ExecutionContext.
  (DistributedDriver in general is not optimized, and is considered
  experimental at this point.)

- As an alternative to TestkitTest, the new AsyncTest class supports
  test methods that return Futures or Actions, and provides the
  necessary infrastructure for such tests. Testkit enforces that test
  methods in TestkitTest subclasses return Unit and that test methods
  in AsyncTest subclasses return Action or Future.

- Further simplifications for Testkit tests:
  - A string interpolator for generating unique names
  - A custom matcher instead of Assert.assertEquals

- Rename `.ddl` extension method for `TableQuery` to `.schema`

- The new API moves some operations to different profile levels:
  RelationalProfile is required for schema-related features and inserts,
  JdbcProfile is required for transactions, updates and deletes.
  BasicProfile only supports querying.

- DistributedProfile only extends BasicProfile, not RelationalProfile.
  The extra operations of RelationalProfile have never been supported
  anyway.

- Upgrade to Xerial-SQLite 3.8.7 to get in-memory databases with shared
  cache across multiple threads. This is needed for some new test cases.
  Disabling the test for multi-column primary keys on SQLite for now in
  ModelBuilderTest. This feature is broken in 3.8.7.

Still missing in this version:

- Pinned sessions

- Wrapping actions for transactions and error handling

- Streaming results

- Get statements from all insert actions