Implement non-blocking polling of sockets. (Not ready yet)

Got tired of nanomsg pegging my CPU and causing my fan to turn on. :) This uses the libuv API for socket polling directly, so nanomsg doesn't have to implement its own polling infrastructure.

Opening this PR, but there's a few bugs left to fix. Right now it passes all tests but it fails on my own project. I'll write the additional test and include it.

CPU usage doesn't actually go down, but I believe this is because the surveyor socket is enabled at the wrong time and returning -1 basically in a loop.

Additionally, I accidentally rebased this off another feature branch, so I should land those first.