upr client: support multiplexed streams in fake server

Change-Id: I558dfb9723d72207067e12783b243a31e6453161
upr client: remove locally buffered stream events on stream_close

The server might have sent all the mutations to the client by the time
UPR_STREAM_CLOSE message reaches the server. Hence even if the server
replies with vbucket_stream_not_found, the client has to remove
internally buffered stream event queue if present.

Change-Id: I912dd190ebeb748534b58a6e9518f527792906a6
upr client: add fake producer support for remove_streams and pausing

For testing multiplexed streams, it requires additionaly support
from the fake producer to slow down the sending of mutations. Helpers
APIs has been added to pause and continue mutations to the client from
fake server. Support for stream_close message also has been added.

Change-Id: I6a2aad3cf28555609a6344128f9c8bcd36d3f538
upr client: add tests for multiplexing and remove streams

Added unit tests for multiplexed vbucket streams, listing
active streams and remove streams API.

Change-Id: I0e337e66635f5a69cb3aa654aaf5b07205ebb98e
upr client: add support for throttling events queue

The upr client internally needs to buffer a limited
amount of mutations specified by max_buffer_size. If the
reader is slow, the client internally stops reading from
tcp socket and makes use of tcp flow control.

Change-Id: If6ac657987049891d963f8c21bcee86372aa4c0b
upr client: add tests for stream events queue flow control

Change-Id: I8c66d17c0d1595cd13cd39e34813e29afafd0e0a