ata: AtaController subclasses now assign IRQ numbers for disks they detect (fixes PCI ATA IRQ issues).

Also, various changes for PIIX/ICH support. IDE timing is still hardcoded
when it should be determined based on what the interface supports and what
we intend to do with the device (PIO etc).

There's a few TODOs left and the indentation is awful. I'll fix these soon.