race conditions fixes

This pull requests fixes race conditions in tests and listener (I've recently created issues in the main repository).
Right, there is a race condition, but you can't remove it without destroy the test. The situation is:

* The server starts up
* The server starts to handle a long-running request
* The server receives a signal to shut down

At this point, if the server isn't behaving gracefully, the server will immediately shut down and set `exited = true`. However, if manners is behaving correctly, the call to `server.ListenAndServe` in the first goroutine will block until the long-running request is finished.

The long running request notifies the test goroutine that it is done via the `done` channel, which is why `<-done` has to come before the assertion.

There is indeed a data race around  is around access to the `exited` boolean, but that race is the point of the test -- if manners is implemented correctly, the main test goroutine will win every time. We need to make sure that the _library_ is ensuring the correctness of the program, not the test code. If we locked down the order of access to the `exited` boolean, the test would no longer really be making an assertion.

This approach isn't perfect. In particular, a pathological scheduler could finish the `server.ListenAndServe` call, but switch back to the handler routine before setting `exited = true`; this could cause the test to pass even if the underlying implementation of manners was broken. Is this the data race you're talking about? Because I would love to fix this one, but I don't really see a way to do it.