Made IRQ semaphores architecture independent.

That is, now we don't have predefined constants for the
individual interrupts and the kernel has to know all
possible IRQs. Instead, the userspace specifies the IRQ
number and the kernel enables it, if necessary (IOAPIC),
and up's the attached semaphore on that interrupt.
At the moment, one specifies the ISA IRQ on x86 and the
kernel translates that to a GSI based on the ACPI/MPConfig
tables. This is probably not general enough, but we can
easily change that as soon as we need it.
Better use ulong in IPCBuf, not uint8_t.

Prevents warnings on alignment sensitive architectures.