With the current locking doneq can be processed by multiple handlers.
This can cause a ccb to be processed more than once which in turn can produce a use after panic.
Prevent this possibility by using local temporary queue in ahci_ch_intr_direct.
Also protect against overun of irqs if a controller has more than 16 interrupts.
While here fix some style (9) nits.