Restructured the Player object

Instead of being a Shape-derivative, the Player object now owns a Shape
object. This gives a better structure and makes it easier to make Player
objects using other Shapes.