Queue & dispatch all receives in the client
- This ensures that calling stop from a message receive doesn't deadlock the receive loop
- Using TaskQueue.cs so added that to client projects
- Had to modify TaskQueue to work in Portable, now do optimistic increment then unwind if we exceed the max size
- Added a test to verify that async connection start, invoke, stop works without dead-locking
- #2653
Ensure receive queue drained on close
- Drain the receive queue when Stop called
- Raise connection error event if queued OnReceived callback throws
- Remove obsolete buffered messages tests
- #2653