Refactor/create _restore method.

Renamed assignPrototype to _restore, added inline docs explaining usage,
allow for custom _restore methods on models