Asynchronously execute event callbacks

Add update thread to event manager
Problem with windows since they are restricted to one thread
Modify window in module thread

Add dirty flag and other flags to window type
Add feature to create new windows
Drop boost::shared_mutex for std::recursive_mutex