Rename admin APIs /db/user and /db/role to /db/_user and /db/_role

Fixes ambiguity that would arise when I add the rest of the client REST
API to the admin port (#46).
Split up source files in rest package for clarity.
REST API refactoring

The public and admin ports now have the same core API; the difference is
that the admin port doesn't authenticate and grants superuser privs.

The special admin APIs like _user and _role are still only on the admin
port, and the login APIs _session and _persona are only on the public
port.
Better handling of unrouted HTTP requests and OPTIONS

* Requests that don't match any route get a 404 or 405 response as
  appropriate, based on whether there's a route for that URL with any
  other HTTP method.
* 405 responses return an Allow header with a list of valid methods.
* OPTIONS returns an accurate list of methods for that URL.
Small REST improvements

* GET / response has a "ADMIN":true property on the admin port.
* Admin-only handler methods will panic if called in a non-admin context
  (only possible if someone screws up the routes in router.go.)
* Moved some handler methods between source files.
Implemented creation/deletion of databases (PUT /db, DELETE /db)

This doesn't actually change anything in the bucket, just hooks a
bucket up to the gateway or unhooks it.
Note: This commit isn't thread-safe. Some more work is needed there.
Part of #102
Refactored serverContext struct

* Moved into its own file server_context.go
* Made public
* Removed unnecessary struct 'context' (this was messier than you'd think)
Made ServerContext thread-safe by locking access to .databases map

…now that it's mutable.
Some cleanup of ServerContext
Log username (or admin status) along with request URL

Also make sure that 404/405 errors and OPTIONS requests get logged.