alarm: Do not clear the wrong objects when setting the time

When the time is set using goa_alarm_set_time, we cancel the existing
self->priv->cancellable and replace it with a new one. Then we take a
reference to a new context and time. However, since when we cancelled
the old cancellable, we triggered a chain of events which cause
clear_scheduled_wakeups to be invoked from a idle callback. By the time
it gets invoked, self->priv->cancellable, self->priv->context and
self->priv->time point to the new objects that were set up in
goa_alarm_set_time, which we don't want to clear.

Actually, there is no point in clearing them in
clear_scheduled_wakeups, because goa_alarm_set_time already clears up
the older objects and the only other time we want to clear them is in
dispose.

Fixes: https://bugzilla.gnome.org/711696
alarm: The global default main context is always the same

Fixes: https://bugzilla.gnome.org/711696
alarm: Use the same GSource pointer for TIMER and TIMEOUT alarms

Simplifies the code so that it is easier to tag the "cancelled"
handler with the correct GSource and GInputStream (if any) that are to
be cleaned.

Fixes: https://bugzilla.gnome.org/711696
alarm: Tag the "cancelled" handler with the correct source and stream

When a time is set using goa_alarm_set_time, we try to clear the older
source and stream by cancelling self->priv->cancellable. However,
before we have had a chance to actually clear them in an idle callback,
a new source and stream corresponding to the new time is set. This
causes the older source and stream to be leaked, and instead the newly
created objects are cleared.

This is wrong. To set things right, we tag the cancelled handler with
the older source and stream before they are overwritten.

Fixes: https://bugzilla.gnome.org/711696
alarm: Remove redundant preprocessor conditional

Reading the rest of the code, it appears to me that the preprocessor
conditionals were meant to surpress compiler warnings and errors
caused by the lack of timerfd support. For the rest of the logic,
GoaAlarmType is used to separate the different kinds of timers.

Fixes: https://bugzilla.gnome.org/711696
alarm: Consolidate clear_scheduled_time*_wakeups into one function

Since we are using the same GSource pointer for TIMER and TIMEOUT
alarms, there is no reason to continue having separate functions.

Fixes: https://bugzilla.gnome.org/711696
Prepare 3.10.2