Add support for clean shutdown of idle connections

Also:
* Stop server from allowing keep-alive requests after shutdown begins
* Remove race conditions from tests
* Remove mutex from listener
* Improve tests and make deterministic
* Maintains interface backwards compatibility
Major refactor

This update matches the interface to the standard http.Server.
It also embeds the http.Server making all of its parameters and methods
externally available.

Adds TLS support, a lot more deterministic tests and package-level
functions for creating servers with the same method signature as the
http package.