Formats

Lots of stuff here:

1. moved format classes to their own files and added load handling
2. pushed the new pack directory arrangement further
3. moved layouts to their own classes
4. cleaned up format initialization and moved some hard-coded stuff out to the api.