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!
This deadline doesn't take into account any time spent in the earlier `libc::accept()`. Hopefully it won't be much, because it's non-blocking, but I don't know if it's a good idea to rely on that. Granted, I don't know what the overhead is of checking the current time.

On that note, I just checked what `::io::timer::now()` does (which is use in `util::await`) and that's using `gettimeofday()`, which is not an monotonically-increasing clock. That really needs to be adjusted to use something like `time::precise_time_ns()` instead.