Move Models module to have an init method that sets up all models

resolves #2170

- creates a models.init() function that requires all other model files
and caches them.  This is opposed to the previous functionality where
when you require('./models') it would immediately require all other models.
Now it's done when you want.

- Updates all tests to reflect the new structure of the model module
Merge pull request #3777 from hswolff/lazy-models

Move Models module to have an init method that sets up all models