time: clocksource: fixed a linkedlist bug.

tm_process_clock was handling the timer linked list in a bogus way.
Under the right circumstances it would put itself in an endless circular
list when updating the timers on a clocksource.

Fix:
Removed the usage of the linked list API (<etaos/list.h>) and
implemented a manual linked list in the timer structure/API.

I have also reduced the update overhead by changing the clockskew type
from `int64_t' to an `unsigned int'. This reduces the demand on
registers between function calls by 6 bytes (aka 6 registers, each
call). It also has a potential (positive) effect on the stack. The
function to get the clockskew is called cs_get_diff. Please note that
you still have to call tm_update_source to actually update a clock
source. cs_get_diff only calculates the clockskew.

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