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!
The `closed` atomic here does not actually control access to any other shared state, or otherwise have any ordering constraints or dependencies. The only related value is the pipe, and that's just use as a signaling mechanism to `select()`, i.e. the ordering between the `closed` boolean and the data being available on the pipe is completely irrelevant.

To that end, I think it's safe to make this `atomics::Relaxed`, along with the corresponding store.