Split AbstractModelLoader into AbstractLoader and AbstractModelLoader to provide a common interface for all loaders, including the image loaders for #143