WIP: Refactor database methods into server

## Overview

This pull request consolidates the `Database` API into `Server`. This simplifies a lot of the code flow -- especially the messaging.

I also consolidated `ClusterAdmin` and `DBUser` together. The matchers have been removed for now and I'll add per-DB permissions back in when we do authentication on the `Handler`.
There's only 3 failure scenarios for `CreateBucket`/`CreateBucketIfNotExists()`:

1. The transaction is closed. This can't happen since we're using `Update()`.
2. The transaction is read-only. This would happen if we used `View()` by accident.
3. The bucket name is blank. This can't happen since it's hardcoded above.

System and disk errors would get caught by the `error` returned from `Update()`.

https://github.com/boltdb/bolt/blob/master/bucket.go#L152-L158