Move kern_total_len setting from backend to core code.

(cherry picked from commit 0fb7d9662beb5c1852b72dd7aae58fdec1355526)
(cherry picked from commit f4bbe0e513f1fd0d781df81f8d173c48f9769b0b)
Remove memcpy() from ctl_private[] accesses.

That union is aligned enough to access data directly.

(cherry picked from commit 4f030aac6df832a17d93ff794ff89b78ff27db17)
(cherry picked from commit 8ab714b6d38d90a261e1afc971b87441044f8b6a)
Make backends track completion by processed number of sectors instead of
total transfer size.

Commands such as VERIFY or COMPARE AND WRITE may have transfer size not
matching directly to number of sectors.

(cherry picked from commit e1ea45ea753c850015990779ec69ac6f39c78a27)
(cherry picked from commit 46e9d230dc702265d38611d581272df837ffd825)
Add support for VERIFY(10/12/16) and COMPARE AND WRITE SCSI commands.

Make data_submit backends method support not only read and write requests,
but also two new ones: verify and compare.  Verify just checks readability
of the data in specified location without transferring them outside.
Compare reads the specified data and compares them to received data,
returning error if they are different.

VERIFY(10/12/16) commands request either verify or compare from backend,
depending on BYTCHK CDB field.  COMPARE AND WRITE command executed in two
stages: first it requests compare, and then, if succeesed, requests write.
Atomicity of operation is guarantied by CTL request ordering code.

MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.

(cherry picked from commit 6f0acfd6e3c7a24775fee30864375a98e945310c)
(cherry picked from commit cfa46af4c1264f8c858082b6ed84b81d0b05c0a5)