Sprite image layout class

Try to refactor layouts out of an enum into a proper class.  Use a naming convention on layout id to map to a specific implementation.  This should open the possibility of swapping in different layout algorithms such as https://github.com/clyfish/zerosprites or http://issues.carrot2.org/browse/SMARTSPRITES-64.

Ticket http://issues.carrot2.org/browse/SMARTSPRITES-92