Makefile: add check-sanitizer, check-valgrind and check-coverage targets

Make it easy to run the test suite with:

  check-sanitizer: Address Sanitizer & Undefined Behavior Sanitizer
  check-valgrind: Valgrind (memcheck)
  check-coverage: Test coverage (gcov)
omcache: fix asan and ubsan findings

Fixed a couple of unaligned memory access issues where we cast response
buffers into memcache binary protocol header unions without considering
alignment.  Also fixed a case where we allocated a 0-length array.
omcache: fix more coverity findings

Socket creation can fail if we run out of file descriptors, for example.
Also added a test case for setting servers to an empty string, Coverity has
a false positive warning about it.
tests: put each test in it's own "check test case"

This makes it possible to run individual test cases using
CK_RUN_CASE=test_name environment variable.
tests: add libmemcached ketama compatibility test

Only test basic ketama compatibility without triggering server failures and
reconnections, etc for now.  Testing them is going to be somewhat more
complicated as the failover / resume semantics are not and will not be 100%
compatible between the implementations.
server failures: make sure we can bring servers online after all have failed

Previously OMcache would not bring failed servers online if the caller
didn't call omcache_io() after failed requests, which from an API usage
perspective doesn't really make sense.  Now we try to advance the connection
state in the ketama lookup phase to make sure we'll eventually connect to
failed servers.