It seems that calling printf() in the interrupt handler is bad. Once
I stopped doing that, the PCIe errors stopped occuring.

This change removes a bunch of debug prints and starts on the path to
getting basic RX working.
Get rid of some more old stuff added during debugging.
Start moving functions around to group logically-related stuff together.
I was still seeing intermittent PCIe DLLP errors, but this change seems
to clear them up.
Add some support for MSI-X and MSI.