Event channels handlers.
val program_start : event
represents an event which 'fired' when the program started
next channel event blocks until the system receives an event newer than
event on channel
channel. If an event is received while we aren't looking then this will be remembered and the next call to
after will immediately unblock. If the system is suspended and then resumed, all event channel bindings are invalidated and this function will fail with Generation.Invalid