CCBC-301: Packet Forwarding Functionality

This changeset provides packet forwarding functionality, allowing
efficient relaying of existing memcached packets over to their
destination servers, and relaying responses back to the user with
efficient buffer management.

This patch includes:

- volatile lcb_cntl to get/set the rdb_ALLOCATOR being used for read
  buffer management

- mc_forward_packet() function. Currently internal but very flexible -
  allows forwarding packets either as an IOV array, a contiguous
  user-allocated buffer, or a temporary buffer (which is copied)

- lcb_pktwd3() function which can receive an lcb_CMDPKTFWD which
  contains the appropriate buffers and/or IOVs to relay to a target
  memcached server. This is a wrapper around mc_forward_packet()

- lcb_backbuf_ref(), lcb_backbuf_unref() functions which wrap
  rdb_seg_ref() and rdb_seg_unref() to allow for refcounting the
  receive buffers

- modifications inside mcserver to properly be able to handle packet
  structures with the F_UFWD flag set.

- iovcursor module to be able to read and look at data stored in
  scatter-gather style structures

- mcreq: pass pipeline to buf_done_cb

Change-Id: Ic51e034b29a456a596e633ecbc213c4cfcadecaa
Reviewed-on: http://review.couchbase.org/37638
Reviewed-by: Brett Lawson <brett19@gmail.com>
Tested-by: Mark Nunberg <mnunberg@haskalah.org>