Made GPIO register lookup functions public
Pass pointers to struct gpio instead of copies
...And make the pointers const
Allocate events statically, 1 per event source
Tasks can now accept some opaque user data