MB-11067: Return read/write buffers back to thread when connection goes idle

Change the buffer management for connections / threads - instead of
allocating a read & write buffer to every connection object, have
per-worker buffers which are "loaned" to the connection which is
currenlty running. When that connection goes idle, return the buffers
back to the thread. In the (uncommon) case where a buffer was only
partially read, leave it loaned to the connection.

This reduces the buffer footprint from O(established_connections) to
O(worker_threads).

Test results:

Simulate a high number of connections / low throughput workload:
create 8,000 connections, perform 3 set / 7 get operations (4k size),
then leave the connections idle. Measure the VSZ and RSS of memcached
after 4 iterations of the test workload.

Measured with tcmalloc disabled (using OS X stock malloc), to avoid
any effects of tcmalloc holding onto memory after it has been freed.

Baseline (ebcbd79b30db0fe6dbe4ff1b4a40632fae061f2f):

    UCOMM                 VSZ    RSS
    memcached         2740964 211840

With this patch:

    UCOMM                 VSZ    RSS
    memcached         2641640  80856

Change-Id: I4a34e56561811e4a264c7616b2b84e342cdc9ee5
Reviewed-on: http://review.couchbase.org/38555
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: Trond Norbye <trond.norbye@gmail.com>