Fixed stuff that I apparently left broken way back when
Moved garnish.Upstream to upstream.Server.

The goal of this and the next commit is to make upstreams more isolated/stand
alone.
Route no longer has an Upstream (string). It only has a Name.

It's up to the upstream module now to associate a route with a server. This
makes it cleaner to use garnish wishout the upstream module (say, when using
the dispatch module instead).
allow independent DNS resolvers to be set per server, default to DnsCache implementation
Caching middleware supports PURGE.
Return error when trying to launch server without a configured router