Fix reference leak in process_get_command()

If a command-aborting error (invalid key, out of memory) was encountered
while processing a get command with multiple keys, the references to the
items before the one that caused the error were never being released.
Fix reference leak in binary protocol "get" and "touch" handlers

When the binary protocol was used over TCP, the references to objects
accessed by "get" and "touch" commands were never released. UDP clients
didn't run into the problem because conn_cleanup() is called at the end
of each UDP request.
Combine binary "get" and "touch" handlers

There was a ton of code duplication in these two request handlers; they
do basically the same thing so are cleaner as one function with a few
extra conditionals.
Stop returning ASCII error messages to binary clients

In a couple out-of-memory conditions, out_string() was being called
regardless of the client's protocol.  Wrap all the out-of-memory
out_string() calls with a helper function that returns a binary
response if appropriate. (In most cases, this is in ASCII protocol
handling code and thus is a no-op change, but using the wrapper in some
places and not others is an invitation to future bugs of this type.)
Allow caller-specific error text in binary protocol

Right now this is just used for out-of-memory errors, but may be used
for any error response where there's value in replying with something
other than a generic description of the error code.