cc @tikue
Currently, we force users to call server.listen(reactor_handle, addr);. Forcing users to use a handle is a little opinionated, since users of the futures API might want to be able to explicitly control how they run their server on their reactors.
This would change FutureService to expose a bind call, which would either return the bound address and a future which encapsulates the server itself, or just a future which exposes a local_addr method. Then users can choose how to run this future on their reactor(s).