Separate out the broken Adaptec driver detection code.

This is to make it easier to add other cases to catch
other kinds of broken controllers, like 3ware.
SAS drives on 3ware controllers don't report SMART stats.
Close file descriptors before exec'ing collectors.

Without this we leak FD 3 to the children, which is typically used by
the logging library to hold a reference to the current file (which
will eventually get rotated and later possibly deleted).