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
Implement verify-time validity checking

This includes a system for adding additional validity checks, which can
be enabled or disabled in the configuration file. At the moment, the
default is to check that the IP a Node has is the one which verifies it.

In order to complete this, we will need to update the verification email
and include instructions for verifying from a remote server.

Ref #58
Add basic information in the README

It will need another pass to cover everything about NodeAtlas's
architecture, and will eventually need install guides.

Ref #48
Improve README somewhat, but is still incomplete

Ref #48
Add From, To, and Date header to verification email. (#80, RFC 2822)
Fix typo
Make a minor improvement to verify.go

Previously, a const was being declared inside a function, which happened
to already be present in the time package. This commit removes that
constant and uses time.RFC1123Z instead.
Improve verification email template

It now includes instructions if the verify link must be visited by the
registered node, and provides small code snippets for cURL and wget.

Close #58
Ref #44
Implement node limitation by netmask

The config now has a Verify.Netmask field, which is a string with
CIDR-formatted netmask, such as "fc00::/8" or "192.168.0.0/16".

Close #65
Add multiple-protocol support to the HTTP server

Now, bind addresses are specified as "protocol://address[:port]". For
example, the old behavior of "0.0.0.0:8077" is equivalent to
"tcp://0.0.0.0:8077".

In order to use UNIX sockets, one would simply specify
"unix:///path/to/socket".

Close #82
Version 0.4.1