irq: added a base for dynamic IRQs

Started the implementation of a dynamic IRQ subsystem. IRQs can be
allocated and released on demand. The generic layer, in kernel/irq.c is
the easy part. This file is only responsible for the administration and
high level handling of IRQs. Most of this has been implemented. Only the
releasing of IRQs hasn't been implemented yet.

The hard part, which hasn't been implemented yet, is going to wiring the
right IRQ to the right driver. All these drivers are architecture
specific in most cases which might cause some trouble.

IRQs can be requested using:

	irq_request(irqnum, flags)

IRQs can be released using:

	irq_release(irqnum)

Signed-off-by: Michel Megens <dev@michelmegens.net>