Engine now split into public and private source

Events system is now platform agnostic, added new interfaces for the
app. Only stuff the app should use is now public