irq: added basic IRQ data structures.

Added the irq_data data structure. IRQ data is the data structure that
holds information about one specific IRQ. An IRQ is always exectuted by
some sort of chip, usually the CPU core. Information about this chip,
relevant to IRQ's, is stored in the irq_chip data structure.

Signed-off-by: Michel Megens <dev@michelmegens.net>
list: added a linked list API header.

Added a header file with a Linked List API. This API can be used to
create linked lists, add, delete and move entries in linked lists. And
last but not least get the data structure which is carrying the linked
list using the container_of macro.

The container_of macro is also added in this patch, and it is driven by,
if possible, __builtin compiler features. There are however, back up
definitions available which lead to the same result if and only if these
compiler features are not supported by your compiler.

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