Refactor package graceful

This is meant to accomplish a few things:
1. graceful no longer spawns an additional goroutine per connection.
   Instead, it maintains a sharded set of idle connections that a single
   reaper goroutine can go through when necessary.
2. graceful's connection struct has a more orthogonal set of connection
   state flags, replacing the harder-to-understand state machine. The
   underlying mechanics are largely the same, however.
3. graceful now uses the Go 1.3 ConnState API to avoid the "200-year
   SetReadDeadline hack." It still falls back on SetReadDeadline on Go
   1.2 or where ConnState does not apply.