Added a new ShapesFactory to create shapes from file or input by typename
Added initial implementation for file operations
Moved the logic of changing direction on screen bounds collision to Shape