Reactify the reading part of ReactiveSocket
Reactify the sending part of ReactiveSocket
Complete the observables when the ReactiveSocket is disposed
Release the lock on the same thread as the lock was entered

Also use a simple monitor for synchronization, as a ReadWriterLockSlim
is a bit overkill
Complete the listener observable when disposing
Move using to their correct positions
Release synclock as soon as possible
Terminate the sequence if stream.EndRead returns zero bytes, so we don't end up with 100% CPU consumption
Merge pull request #12 from flagbug/reactify

Make ReactiveSockets more "Reactive"