Java 8, Separated UIElement from PhysicsObject, updated demos, changed application structure

Switched to java 8 and started replacing the old event system with a new improved one based on lambda expressions. I also changed the relationship between Shape, UIElement and PhysicsObject to better reflect the responsibilities of each class. Finally I updated how the application is layered by adding a GameStateManager class which handles transitions between differed application states.