resolves #1 add socket monitor functionality

Also addresses some surprising socket clean up behavior with
naive use of io_service.stop() and async operations which retain the
socket by shared_ptr (creating a reference cycle).
fix #10 spurious failures on receive/receive_vec
Merge pull request #8 from rodgert/master

resolves #1 add socket monitor functionality