Model now implements a more sensible create interface
Moved type checking out into its own class
Reversed the order of parameters to Prototype::create so the interface feels more sensible
Changed Model::create to allow it to take a prototype object
Hashed out the interface for the load method