fixes # 19 Made quite a few changes to systems, components, the game manager, and how the user interacts with the api

Systems now hold there registered entities in a map.  This was done to
be consistent across other game objects and to assist in the problem of
duplicate entity registrations
Game_Manager now holds special pointers for the camera and screen
create_screen_entity is now intitialize_screen
create_camera_entity is now initialize_camera
A default screen is automatically created when the game systems are
initialized
The user can redefine the screen using initialize_screen
The camera does not need to be defined for the game to run
A camera will automatically be set to the same height and width as the
screen
The camera can be defined using initialize_camera
When the camera or screen are initialized by the user, their pointer in
Game_Manager is updated
Many checks were added to Camera_System and Render_System to ensure
that screen and camera entities exist and have the proper components.
If they don't meet the requirements, nothing may be drawn, or the
camera may not be updated depending on what the problems are