Fix support for LUN flat space addressing.

MFC after:	1 week

(cherry picked from commit be81b72040e8d5829a1a9f3453e9f89e3d985aa7)
Allocate buffer for READ BUFFER/WRITE BUFFER commands on demand.

These commands are rare, but consume additional 256KB RAM per LUN.

MFC after:	1 week

(cherry picked from commit 6a4642451ed02bdd3f5f5f5f0a1c2cc4d4dd79ab)
Reduce code duplication around Write Exclusive persistent reservation.

While there, allow some more commands to pass persistent reservation.

MFC after:	1 week

(cherry picked from commit 1a960f7ebea1c5855e9a85ab1bf24a542af0d052)
Remove comment obsoleted by r273730.

MFC after:	1 week

(cherry picked from commit 981411c14ee33b40717b9ca1151bd411b7add9b7)
Sleep 3 seconds before re-attempting mpssas_get_sata_identify().

Patch adapted from https://bz-attachments.freebsd.org/attachment.cgi?id=148149
from FreeBSD bug 191348 by Stephen McConnell (Avago Technologies).

Ticket: #6459
MFV r273617: netcat from OpenBSD 5.6.

MFC after:	2 weeks

(cherry picked from commit 3c5ed8a35e05fcb26f7df0d503c4861723b18647)
Implement better handling for ENOSPC error for both CTL and CAM.

This makes VMWare VAAI Thin Provisioning Stun primitive activate, pausing
the virtual machine, when backing storage (ZFS pool) is getting overflowed.

MFC after:	1 week
Sponsored by:	iXsystems, Inc.
Ticket:		#6468

(cherry picked from commit e1805defee550f3ab4638c681803c6b7dd62e266)