Graceful shutdown on SIGINT, SIGKILL, and SIGTERM

Close #55
Create Deproxier to simplify remote proxies

This commit adds a Deproxier type, which implements http.Handler and
wraps http.ServeMux. It reads the header on all incoming requests, and
if one of the fields (such as "X-Forwarded-For" or "X-Real-Ip") is set,
it will replace the RemoteAddr with the value of that field.

This means that the rest of the application can treat RemoteAddr as the
true remote address of the client. ReverseProxies are made transparent.

In the future, this can be used to strip address prefixes.

Note that the configuration file has changed considerably, and old
versions will not start up without modifications.

Close #45