48809579 Refactor attribute gathering out of the builder so it can be
reused for tests and factories.
48809579 Very improved model factories. Now a model factory can be
created just by specifying the factory class. Model reflection is used
to determine the what fields to include as well as the proper attribute
types.