Initial work from timer object.

And the associated fallout. Needs another commit to handle calling back
into user-land.
Second iteration of alarms.

Alarm thread isn't being released - need to add to scheduler.

Alarms are automatically re-armed or re-triggered / not removed.
Fix alarms. Get the thread up.
Initial working timer.
Fix cancelling of timers.

Was setting the user data of the next alarm rather than setting the
user data of the low-level timer.
Fix timer shutdown issue when processes are closed.