Style: Reorder class fields (public, protected, private)
Replace pe::engine namespace with pe::Application class

Namespaces have various limitations that made good design difficult:
- No access specifiers
- No Constructors/Destructors
- Making friends with namespace members is really ugly (The reason why I started this)
pe::KeyState: Make update() private, and make friends with Application
pe::State: Make all fields protected and make friends with Application
pe::Application: Make non-copyable
pe::Application: Initialize members with no default constructors
pe::Application: Take ownership of states

This has one major advantage: You can create a state whenever you want.