Initial commit
Rename ProxyMux to Mux for the sake of simplicity

Go already clearly namespaces packages at import time, so there's no need to
distinguish the proxymux.Mux type.
Name test server instances
Make router talk to the mongo database
Move mongo connection handling into Router

Instead of establishing a connection once and reusing it, instead we only
establish a connection to mongo when needed. Any errors loading routes from
mongo should be caught, and the reload aborted (the old routing table will
be restored).
Use all available cores in the router program
Seed RNG when running tests
Increase the number of kept-alive connections backends

In acting as a reverse proxy, it's probably sensible to keep a few more than the
default (2) idle connections about. This number (20) has *not* been arrived at
empirically, and we should certainly do more testing to establish what the
correct value is for our real workload.
Run more servers as part of the test server

And increase the body size of the content they send (now randomly chosen between
8KiB and 72KiB).
Make randomly generated bodies optional in the test server
Add data and tools for benchmarking the router
Move router into its own repository
Add README and LICENSE
Add package docstring
Add Register docstring
Import proxymux as subtree
Rename proxymux to triemux
Vastly simplify triemux: move proxy mgmt to router

This commit vastly simplifies triemux, while at the same time making it far more
general. Instead of explicitly adding backends and managing routes to those
backends, triemux now looks much more like Go's standard library http.ServeMux,
but with a more flexible set of rules for routing.

A triemux object now registers objects matching Go's http.Handler interface
type, rather than managing the creation of reverse proxy objects itself. This
potentially opens the doors for the router to handle redirects as well as
straightforward proxying.
Add a gitignore for triemux