Add `Listen{TLS}()` and `TCPKeepAliveListener`.

Unlike the `ListenAndServe()` and `ListenAndServeTLS()` functions from
the `net/http` package, `Listen()` and `ListenTLS()` do not call
`Server.Serve()`, and can listen on random ports. This is useful for
deferred initialization and testing; the server and router can now
listen for incoming connections immediately.
Use `Listen{TLS}()` in `{Serv, Router}.Init()`.

* Move the `Addr` and `Ssl{Key, Cert}File` options to `ServerConfig`.
  If the `Addr` option is omitted, random ports will be chosen for the
  server and router.
* Add `{Serv, Router}.Listener()`.
* `Application.FullHostname()` => `Serv.FullHostname()`.
* Remove `{Application, Router}.Addr()`.