timer: Allow timers without callback defined
timer: Make Timer structure non-opaque

We need this to be able to embed Timers in other structs.
timer: Add functions to initialize Timer in static struct and get properties
notification: Embed Timer into Notification

We will use this to track lifetime of notification.
notification: Move expire_ms fixup where it belongs

expire_ms as received over D-Bus might carry '-1' to signal
show that default timeout shall be used.  This commit moves
logic which handles this to Notification struct itself.