Implement {Tcp,Unix}Acceptor::{clone, close_accept}

If a task is spinning in an accept loop, there is currently no method of gracefully shutting it down. This PR introduces a way to do so by cloning the acceptor and implementing a close_accept method to unblocking any pending acceptor.

As with other I/O methods like this, it is `#[experimental]` from the start and sadly carries with it a good deal of code to support it. Much of the complication is from the fact that you can now concurrently accept on the same socket.

I tried to add a good deal of tests for this change, but another set of eyes is always appreciated!
Another thing to consider is whether or not it's expensive to use `select()` on sockets with a timeout of 0 (so it polls but does not block). If it's actually relatively cheap, then you can ditch the atomic entirely, and just use the state of the pipe as the "truth" of whether the acceptor is closed.

This would involve always doing a `select()` first (with a zero timeout), and checking whether it said the pipe was ready for reading. If it didn't (and didn't indicate the acceptor was ready), then you can move into the loop of a blocking `select()`. You'll need to consult the results of that blocking `select()` as well, and only end up calling `libc::accept()` if the `select()` says it's ready.