Code cleanup and refactor
Fixing Engine class to be real singleton (doh)
Adding virtual destructors