JVMCBC-77: KeyValue content and extras need to be retained.

Motivation
----------
When using profiling tools, it was discovered that lots of exceptions
were thrown as part of the writing process, but hidden because a
Void future was used on those IO write operations. This is fixed in a
separate commit (JVMCBC-76).

As part of the investigation, it was discovered that the ByteBufs
referenced (content and extras) need to be manually retained, because
the MessageToMessageEncoder frees them as it sees fit and otherwise
the code ends up in reference count exceptions (double freeing).

Modifications
-------------
Properly retaining extras and/or content when they are set on the
request.

Result
------
No more reference count exceptions as part of the writing process.

Change-Id: Idfd411082014fbcd87cec31ad33cb7acd5740dc1
Reviewed-on: http://review.couchbase.org/43786
Reviewed-by: Simon Baslé <simon@couchbase.com>
Reviewed-by: Sergey Avseyev <sergey.avseyev@gmail.com>
Tested-by: Michael Nitschinger <michael.nitschinger@couchbase.com>