[connman] Fix GSource allocation, wakeup timer execution

Do not execute a wakeup timer with zero timeout from within the
function that adds the timeout; otherwise a one-shot timer would get
removed before source ID is returned to the caller.

Also, completely free dummy GSource when it's cleaned up.

Created a unit test application for wakeup timers; added a test case
for exercising connman_wakeup_timer().