Further abstraction inside Screen class.

Implemented an abstract class Component which is used to abstract away
class type for Sprites, Terrain, etc, so that we can put all components
in a generic linked list and iterate over it to call our lower level
methods.