Add non-blocking exit-waiter function

This way you can pass in a channel that you want to be notified on
instead of blocking in a function call.
Add NOSAVE local event status to indicate not to save it in the DB upon unlock
Add on/off-line tracking to status
Re-factor event processing into 'contexts'

This involves moving the actual Process[Local|Remote]Event routines into
their own source file, separating the upper and lower halves of local
event processing (necessary for when processing events when we're just
starting up), and creating separate event processing logic for startup
versus 'normal' mode.