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 two failure scenarios:

1. `a` is unencodable.
2. `w` is closed.

The first case is something we can test for. It'd happen if we passed in a type like `map[int]string`. In the second case, we can't recover from it and notify the user (since they closed the connection) so we may as well ignore it.