Improves internal docs for myself to remember faster some made assumptions.

Also, moves internal shared function to a better place.
Decodes IDE, SATA and SCSI devices with one caveat.

The structure had to be flattened. The vmx structure for sata, scsi and ide
devices is not the same, blame VMware. Trying to have an array of Controllers
containing an array of devices proved to be very complex to decode.

Be aware that for SCSI devices, one of the devices is actually the SCSI
controller. Which one is? usually the one with virtualDev or PCISlot
defined.
Encodes IDE, SATA, SCSI and USB devices properly
Adds tests for USB decoding
Merge pull request #9 from cloudescape/ide-sata-scsi-support

Adds support for encoding and decoding IDE, SATA, SCSI and USB devices