allow creation of sockets from explicit handlers

and make _handle property available on both ctx and socket
add shadow support

- expose underlying address as ctx/socket.underlying
- add `Context.shadow(address)` and `Socket.shadow(address)`