Initial packet forward

This patch adds the requested API for incjecting preformatted
packets into libcouchbase (NOTE: the opaque field of the
packet will be overwritten since it have an internal
use inside libcouchbase), and the API to get a complete
packet callback when the packet is received from the
server (this is where you would want to restore the opaque).

The patch introduce the lcb_buffer_t structure that may
be shared between threads. It use an internal reference
counter (manually updated). The typical pattern to use
this would be:

    lcb_mutex_enter(&buffer->management.mutex);
    buffer->management.refcount++;
    lcb_mutex_exit(&buffer->management.mutex);

then you may hand the buffer over to your own thread
and do whatever with it. NOTE that you're only allowed
to touch the fragment shared with you represented by
the IO vector. When you're done using your fragment
you may call:

buffer->management.destructor(buffer);

That will decrement your reference counter and when
the last reference to the buffer release the resource
(or recycle the buffer depending on the allocator).

Limitations:
  * When calling lcb_forward_packet the entire packet header
    must be in the first fragment
  * It will proxy "unknown"/unsupported packets as well,
    causing undefined behavior
  * The send path will do buffer copy over to the internal
    send buffers due to the internal logic (I don't want
    to refactor this before the other refactor of the
    underlying io)