trim: Target SCSI UNMAP command instead of WRITE SAME.

* The UNMAP command is theoretically much faster, as it can get many block
  ranges instead of just a single range.
* Furthermore, the ATA TRIM command resembles it much better.
* Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP
  to trim.
* Updated BFS code to collect array ranges to fully support the new
  fs_trim_data possibilities.
ahci: Pushed TRIM support a tiny bit further.

* Now doesn't do anything on SCSI_OP_UNMAP, instead of doing nothing on
  SCSI_OP_WRITE_SAME_16.