added ball class and related classes (factory & states)

changed all factories to load from image rather than filename
(plan to load a single sprite sheet with all textures; more efficient than loading the file for each factory)

added comments to explain the more obtuse code