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.
Start to pull apart and refactor changes. Eliminate or simplify most static functions
Move test support code to new file. New file still too big -- will split up
Separate test helpers into different files
Move interface test and supporting code to separate file
Minor copyedits to comments
Remove tcpKeepAliveListener
Add a function to shut down the default server
Merge master into non-backwards-compat
Delete interface test
Move state transition test to separate file
Merge branch 'non-backwards-compat'