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 deadline is an absolute time, so how would it take into account time spent in accept?

You can ignore that comment. At the time I thought it was relative.

> I'll leave that for another patch?

Fair enough, I just wanted to point out the issue.

> Can you explain? I am under the impression that await will return an error for the timeout, causing `try!` to return from the function.

Apparently it does. Without realizing it I had skimmed the wrong `await`. There's multiple definitions of `await` in `io/util.rs`, but one is the public function and one is a separate implementation inside of `connect_timeout()`. The latter doesn't do any error handling, but the former does indeed return an `Err` for timeout.