Move event loop into the EventManager

This move paves the way for adding additional functionality to the event
loop.
Add Async method on EventManagers

This allows us to asynchronously execute a function.
Add Futures and an example application
Merge pull request #53 from dschatzberg/events

Add Futures