core/sys/rtimer.h, rtimer.c: support multiple timers; allow cancellation

This rewrite of rtimers introduces the following changes:

- more than one rtimer can be used concurrently

  Some operations are O(n) for the number of active rtimers, so
  their number should still not be excessive.

- when setting an rtimer, the handler is guaranteed to be called
  exactly once. Before, it could also happen that it was never
  called or that it was only called with a very large delay,
  depending on the underlying architecture support.

- rtimers can be cancelled with rtimer_cancel. Cancellation means
  that the handler function will not be invoked after rtimer_cancel
  returns. The rtimer structure may still be used internally and
  must not be overwritten or deallocated.
core/sys/rtimer.c (next_timer_locked): we need to reschedule if the timer was cancelled

If the timer about to expire was cancelled, we don't call any timer
handler and we therefore always have to schedule the next timer.
This bug was reported by Joakim Eriksson.
core/sys/rtimer.c (set_locked): correct setting of rtimer->ptr
core/sys/rtimer.h, rtimer.c: support setting rtimers from interrupts (draft)

Underlying interrupt model:
- non-interrupt code can be interrupted by a timer interrupt or any
  other interrupt,
- a timer interrupt can be interrupted by a non-timer interrupt,
- non-timer interrupts cannot be interrupted by something else,
- any interrupt can call rtimer_set and rtimer_cancel,
- timer interrupts can also call rtimer_run_next.

Code is only lightly tested. May still harbour bugs.
cpu/arm/k60: rtimer fixes.

 - Handle the RTIMER_PERIOD overflow correctly.
 - Handle timers set beyond the reach of the LPTMR.

Signed-off-by: Joakim Gebart <joakim.gebart@eistec.se>
cpu/arm/k60: rtimer stability

 - Follow guideline for CMR accesses by disabling the timer beforehand.
 - Handle timer wrap around in a different way.
 - Remove call to rtimer_run_next in order to avoid some race condition
   with the ISR that seem to cause random deadlocks when more than one
   timer is active and a timer is deferred.

Signed-off-by: Joakim Gebart <joakim.gebart@eistec.se>