Change interface for message variant of socket::receive

Added test case to cover multipart receive using message variant of
receive method. Added message::buffer_copy() method to simplify
interaction with message types.