Handled EINTR case for sockets.

Not handling these is a big problem for ENet with Mono.
Mono uses signals for its garbage collector, so EINTR happens all the time.
Right now, enet_host_service fails around the time Mono invokes its GC.

The only API change is the addition of -2 error code on enet_socket_wait.
This means 'recompute the timeout and retry'. It's unavoidable for correctness's sake.
Luckily ENet uses a < 0 convention for errors.