Add copy_assign interface to socket_acceptor classes

This allows an acceptor socket to be copied to multiple threads where
accept may be called independently in each thread.
Add release feature to several socket classes

This allows native descriptors to be assigned to other sockets, usually
belonging to another io_service.
Allow receipt of original destination addresses of transparent sockets
epoll_events as a member of epoll_reactor, allocated on heap

To avoid having a large lump on the stack in epoll_reactor::run