Add Channel::CancelConsume() to cancel BasicConsumeMessage

This method cancels BasicConsumeMessage as if it timed out immediately.
Internaly it uses pipe() to listen to in select() call in
GetNextFrameFromBroker(). This way different thread can write a byte
to the pipe, causing BasicConsumeMessage to timeout immetiately.