CCBC-386: Be smarter about logging timeouts

Due to the current implementation the 'timeout handler' may end up being
called on idle connections if there is no current activity on the
socket. In this case, we don't want to log each time the handler is
invoked, but only when commands have actually failed as a result of a
timeout.

Additionally, this commit also logs details about commands which have
actually failed.

Most of this behavior exists in the current master branch, but not in
packet-ng (until this commit) because packet-ng was forked from a DP
version of 2.3.0

Change-Id: I67b855b5cdf0c0319422e30d51a749b64d6cadb4
Reviewed-on: http://review.couchbase.org/38191
Reviewed-by: Brett Lawson <brett19@gmail.com>
Tested-by: Mark Nunberg <mnunberg@haskalah.org>