SandeshReader OnRead() calls a receive message callback which can be
updated/made empty from a concurrent thread - the state machine thread
when shutting down the SandeshSession. The core reported in the bug
is seen due to calling an empty function object. Protect the call
and updation of the receive message callback using a mutex. Moved the
receive message callback from SandeshSession to SandeshReader.
Removed the need for a mutex in SandeshWriter by using atomic bool
for ready_to_send_. Renamed mutex in SandeshSession to reflect the
usage.
Closes-Bug: #1354667

Change-Id: I5cdf26d39f0ee7c0aa1b10755f1c5115a0c9a635