timer: Better fix to the timer re-scheduling situation

As it turns out, the previous fix didn't cover the case of a
timer X being re-scheduled inside a timer call back expiring at
the same time as the previous X instance.

Written-by: Pablo Neira Ayuso <pablo@gnumonks.org>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
diff --git a/src/timer.c b/src/timer.c
index 77fb003..79d4ad6 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -69,12 +69,9 @@
  */
 void osmo_timer_add(struct osmo_timer_list *timer)
 {
-	if (timer->active) {
-		rb_erase(&timer->node, &timer_root);
-	} else {
-		timer->active = 1;
-		INIT_LLIST_HEAD(&timer->list);
-	}
+	osmo_timer_del(timer);
+	timer->active = 1;
+	INIT_LLIST_HEAD(&timer->list);
 	__add_timer(timer);
 }