Add primitives and configuration for async execution of blocking I/O

- AsyncExecutor manages a pooled ExecutorService and provides an
  ExecutionContext for it. It is optimized for blocking I/O calls.

- The Database factory methods for JdbcBackend take an additional
  AsyncExecutor argument, falling back to an executor with a default
  configuration.

- Database.forConfig allows the executor parameters to be configured
  through config keys, automatically using the correct thread pool size
  for a connection pool.

- DatabaseComponent provides asynchronous execution for all profile
  levels. Implementors are required to supply an ExecutionContext
  suitable for I/O on a particular Database. DistributedBackend and
  HeapBackend use the global ExecutionContext.

- DatabaseComponent provides a close() method for all profile levels.

- TestKit and DBTest close all Database instances properly to ensure
  that the thread pools for async tests are shut down.

Test for async execution primitives in ExecutorTest.testAsyncExecution.
Add HikariCP support in addition to BoneCP.
Remove BoneCP support and drop configuration compatibility with Play.

With the modularization in Play and the needs of Reactive Slick, the
goal is to use Slick’s own pool configuration in Play, thus trading
configuration compatibility in Play across different database frameworks
for consistency of database configurations within the same framework
across different kinds of applications (Play and non-Play).

We keep some old config key names where the corresponding HikariCP
option names are unnecessarily verbose. Both naming styles are supported
for both, HikariCP and the non-pooled DriverJdbcDataSource.

Old (already available in Slick 2.0) keys which are no longer officially
supported, and their replacements:
  autocommit     -> autoCommit
  isolation      -> transactionIsolation
  defaultCatalog -> catalog
For compatibility with 2.0, these keys are still accepted for non-pooled
configurations but they trigger a log warning stating that the key is
deprecated.
Remove the option to disable auto-commit for new connections.

Slick’s internal transaction handling requires all new connections to be
in auto-commit mode, so there is no reason to disable auto-commit. This
is also the default according to the JDBC specification. (Connection
pools usually have an option to disable auto-commit but the config keys
do not apply to connections created on top of an externally managed
DataSource anyway).

We also remove HikariCP’s `isolateInternalQueries` options which is
meaningless in auto-commit mode.

Using the old `autocommit` config key (which was already supported in
Slick 2.0) now triggers a log error stating that it is no longer
supported.
Simplify thread pool configuration:

For asynchronous execution, `numThreads` is the main option that
determines scaling. Connection pool sizes are now derived from it by
default (instead of the previous way of starting with the connection
pool size and deriving the thread pool size).
Simplify connection pool configuration
Use HikariCP by default (instead of no connection pooling):

- Disable pooling in TestKit reference config

- Rename `pool` parameter to `connectionPool` (to avoid confusion with
  the thread pool)

- Remove deprecation warnings for `autocommit` and `defaultCatalog`
  parameters. With HikariCP being the default now, there is no way to
  be compatible with an old configuration.
Merge pull request #996 from slick/tmp/async-executor

Add primitives and configuration for async execution of blocking I/O