mpt3sas: move adapter watchdog code

Move the adapter watchdog and the code that starts and stops it into the source
file that includes the driver's PCI callback functions (in this case, the
driver's SCSI Host Layer code). The code shuffling keeps the watchdog code
private to its source file and removes a dependency between the driver's base
and SCSI code. This change also eliminates the need for a per-adapter
schedule_dead_ioc_flush_run callback pointer as the function and all of its
invocations are now in the same file.

Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
mpt3sas: use single watchdog workqueue

Collapse the existing per-adapter workqueues, ioc->fault_reset_work,
into a single driver workqueue. Since this workqueue will exist for the
lifetime of the driver, this simplifies adapter removal and the
canceling of its corresponding watchdog.

Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>
mpt3sas: make adapter watchdog initiated removal safe

Calling pci_stop_and_remove_bus_device from a SCSI LLD may introduce
device removal races with PCI callback functions. Simplify the driver's
watchdog mechanism by separating PCI device removal from SCSI midlayer
detachment. Adjust various pci_driver callbacks to account for a
potentially SCSI-detached PCI device.

Signed-off-by: Joe Lawrence <joe.lawrence@stratus.com>