Make CTL block backend return proper error code for operations unsupposed
by the underlying device.

MFC after:	2 weeks

(cherry picked from commit a6a173909d79f12a0c86dcc0d1be7164392c427f)
Fix extremely slow operation with data digests enabled.  This was caused
by receive code waiting for data digest even when the data segment was
empty.  It didn't actually read it, but it waited until those four bytes
become available in the socket buffer, i.e. until any other PDU (such as NOP)
came in.

PR:		kern/185240
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 379b2b0f9aa593406dd96b85f183e2f1e49a9aab)
Fix a rare "truncated checksums" problem, which manifested like this:

WARNING: icl_pdu_check_data_digest: data digest check failed; got 0xf23b,
    should be 0xdb7f23b

Tested by:	Darcy Birkbeck
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit d0cf88a92be080f09cbd053fbe48534485a2e377)
Fail connection upon receiving too large data segment.

Approved by:	re (glebius)
Sponsored by:	FreeBSD Foundation

(cherry picked from commit a111dd548bde80502ea143ef148b2ebf06c8bbc8)
Fix hang on reboot with active iSCSI connections.

MFC after:	3 days
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 015cdc2535764e4ad04ba03731ed49daf21b0241)
Properly refuse handoff requests on already connected sessions.  Previously
this would result in dropping the session.

MFC after:	2 days
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 47cb60687b1d726069c7831a3ce3ca7cb091fc66)