logging: don't log at NOTICE level when discarding quiet requests at noop

Also made the debug macros expand to a no-op statement when NDEBUG is
defined to silence compiler warnings.
get and delta operations: don't try to handle extras if they're not there

GET{,K,Q,KQ} and {DE,IN}CREMENT{,Q} response handling assumed that the
responses always contain extras (flags or delta values), but in case of
errors extlen may be zero.  Fix this by always making sure extlen matches
our expectations before trying to handle the extra data.

Note that increment and decrement operations check body length rather than
extra data length due to an issue in memcached:
https://github.com/memcached/memcached/pull/92

Pointed out by Clang's memory sanitizer and Tim Sampson.
server timeouts: improved dead timeout handling again

The previous behavior based on timestamps of successful write() and read()
calls did not really work, as it's quite possible that write() will
successfully send data somewhere even if the remote end never handles it and
responds to it.  Now dead timeout is handled differently: dead timeout is
set when the first write is attempted and updated when data is read from the
server until the last pending response has been received at which point it's
reset back to 0.