add some tick math & run functions to hal/sys mod

these are just some things the scheduler will need

firstly we need to be able to diff to sys ticks to find out which tick
is earlier than another, this is somewhat hardware dependant based on
the size of a tick (also I find myself needing this code a lot so
putting it somewhere in a lib is nice)

finally the sys_run is just a funky way to run a function with less than
or equal to 4 params (these exploit the arm calling convention) and make
running tasks a lot nicer (we can have arbitrary functions with up to 4
params of size 4 bytes or less and treat them all the same, note because
of floating calling conventions floats cannot be passed directly atm,
but pointers will work)
add a simple run to completion scheduler & unit test

adds a simple scheduler interface to run tasks at a given time with a
given priority ... all tasks run to completion (and atm cannot yield)

the unit test shows common usages for once off tasks and repeating tasks
along with removing tasks
Merge remote-tracking branch 'origin/master'