Add support for type-specific layouts

Adds support for custom layouts by archive type. Addresses #12.
Any ideas for a cleaner version of this function? Seems a bit complex for what it's accomplishing.