Asynchronous events framework

We use a simple background thread to handle asynchronous
processing requirements.