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.
Add a "stats conns" command to show the states of open connections.

This is mostly for debugging purposes, e.g., to detect hung clients,
but the implementation also simplifies management of connection
descriptors by eliminating use of the freelist and allocating a
static pointer array indexed by descriptor. (The actual conn
structures are still allocated on demand, so the impact on memory
consumption is negligible.)

To be able to show multiple concurrent UDP requests, the UDP socket
is dup()ed so that each worker thread has its own UDP file descriptor
to process rather than all sharing a single one. This means the
server can handle slightly fewer TCP clients before running up
against its file descriptor limit, but any installation that's
running that close to the limit really ought to either raise the
limit or use a proxy of some kind anyway, so this should have no
real-world downside.
Add documentation of "stats conns" to protocol.txt
Factor out string representation of conn
Don't lose item_size_max units in command line
Make hash table algorithm selectable

jenkins hash is old. Lets try murmur3 to start! Default is the old one, so
people aren't surprised.
barebones LRU crawler proof of concept

so many things undone... TODO is inline in items.c.

this seems to work, and the locking should be correct. it is a background
thread so shouldn't cause significant latency. However it does quickly roll
through the entire LRU (and as of this PoC it just constantly runs), so there
will be cpu impact.
basic tests + lrucrawler -> lru_crawler
return next item from crawler_crawl_q

... instead of return flags and such.
adjust some comments.
don't waste an item flag for crawler

detect via an impossible item: nbytes/nkey are 0. There're other clever ways
we could do this as well (nbytes == maxint, etc).
crawler reclaims stat
control system

nothing internally magically fires it off yet, but now there is an external
command:

lru_crawler crawl [classid]
... will signal the thread to wake up and immediately reap through a
particular class.

need some thought/feedback for internal kickoffs (plugins?)
notes
optionally take a list of slabs to run against.

lru_crawler crawl 1,2,3,10,20 will kick crawlers off for all of those slabs in
parallel.
command to change the sleep between runs

lru_crawler sleep 1000 - sleeps for one millisecond between runs.