Added B_TRIM_DEVICE ioctl.
Added fstrim command.

Later, there should be a service that runs this from time to time for all
devices that support it.

Conflicts:
	build/jam/HaikuImage
Added B_TRIM_DEVICE support to BFS.

* It currently ignores the offset/size, though, and always trims everything.
* Now only SCSI support is missing.
This gets the trim command as WRITE SAME operation to SCSI

* Neither hardware nor driver to test it; AHCI/IDE support is next
  on the table.
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.
ahci: Minor cleanup.

* Mostly utilized ATACommands.h
ahci: Use get_memory_map_etc().

* Simplifies code a bit.
scsi_periph: fixed copy&paste error in periph_trim_device().
ahci: WIP of implementing trim command.

* Data Set Management specific bits are still missing.
ahci: Added missing wait_for_completion().

* Thanks Marcus!
* That made the return code for ExecuteSataRequest() pretty much useless,
  so I removed it again.
* Also, a delete sreq was missing; I now allocate it on the stack instead.
ahci: Set the command bits as required.

* The trim command should be functional now, but it's completely untested
  at this point.
ahci: Minor cleanup.
ahci: fixed endless loop, and missing bit.

* The value for trim is bit 0, not 0; added sata_request::SetFeature()
  to change this.
* The lba range fill loop never ended.
* Thanks to Marcus for proof-reading!
ahci: Fixed braindead variable naming.

* Again, thanks Marcus!
ahci: Minor coding style cleanup.

* Renamed some methods to camel case.
* Replaced coding error panics with ASSERTs.
trim: Added is_called_via_syscall() function.

* And use it in get_trim_data_from_user(), formerly known as copy_*().
* This fixes differentiating between user and kernel buffers.
scsi_periph: use synchronous command.

* The call waited anyway, so there is no reason to make it async.
ahci: Fixed missing endian conversion.

* Spotted by Rene, thanks a lot!