Add support for SoftwareWriteProtect and fix bugs in modeselect

Fix a bug in sbc_mode_page_update. We only have a subpagecode in byte 1
IFF the SPF bit in byte 0 is set.

Add support for using modeselect for the CONTROLS page and set the
mask to allow SWP to be changed.

Add a SWP flag to the device attributes and update this as the CONTROLS/SWP
flag is set by the initiator.

Update SBC so that we treat writeprotect as either the current ->readonly flag
that is used to se the hard property for the lun,   or the ->swp flag
that is set in software by the initiators.
Thus like on a real disk, SWP can be used to turn a read-write LUN to become
temporarily readonly, but SWP can NOT be used to turn a physically readonly
medium to become read-write.

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>