Use direct memory accesses in preference to function calls

So, reading and writing to memory through functions in an OS
is /really/ dumb. You have the overhead of a function call
(which the compiler may not be smart enough to optimize into
an inline) with no real gains behind it. It also disallows
for fancy things, like having pointers to structures rather
than just atomic uint8/16/32/64. The function call interface
also has the disadvantage that it actually looks longer and
uglier - in most cases, the array notation looks better, shorter
and probably is better understood. This is the point where Linus
would yell at me for doing dumb things in kernel-land programming.
Work smarter, not through function call overhead :P
Fix massive timer failure
Prevent timer_set_cmp() from using registers 0 or 2

The BCM2835 can't use registers 0 or 2 because those registers
are reserved for use by the VideoCore IV. Thus, it makes little
sense to have code to deal with 0 or 2 since that will break things.