sw: add timer

Defines a generic ABI for a set of software timers, driven by a single
hardware timer.
Currently not as decoupled from or1k as it should be.
The implementation works by setting up an interrupt for the
software timer with the least time left.
When the interrupt occurs, all software timers are decreased
by the elapsed time and the interrupt is set-up for the next
timer in turn.