Final round of 4412 GIC code

I can't get it to initialize. My suspicion is that it's to do with
secure mode restrictions, but I don't know enough to say for sure. I'll
more than likely come back to it, but for now this is shelved.

At current: As far as I can tell everything is initialized in the same
way that both Linux and FreeBSD do so (at least their generic gic
implementations), however when raising a swi the system hangs.
I've confirmed that the vector table is mapped correctly and branching
to eg. 0x4 calls into and returns from the IRQ stub correctly.

If I raise a SWI with the distributor disabled the
pending flag is correctly set implying that the priorities are set up
correctly.