Refactor and implement new BlockDevice

Refactored listing LSI devices so it can be used in the
LSI firmware method. Uses the improved BlockDev implemented here:
https://review.openstack.org/#/c/108040/. Using the model attribute of the
improved BlockDev to match the device to a controller.
Refactor and implement new BlockDevice

Refactored listing LSI devices so it can be used in the
LSI firmware method. Uses the improved BlockDev implemented here:
https://review.openstack.org/#/c/108040/. Using the model attribute of the
improved BlockDev to match the device to a controller.
Adding LSI firmware flashing

This will flash any firmware that is not equal to the firmware version
variable listed in the hardware manager module. It will avoid reflashing the
same firmware so we don't wear out the flash modules.