Commonize applying args logic from record and model factories

This commonizes the logic for applying args between record and
model factories. This is to setup some new features related to
this logic. This commonizes most of the logic and makes the
behavior consistent between the two kinds of factories.
Have factories build associations when provided in defaults

This modifies the factories applying args behavior to build
associations when provided defaults for them. This only occurs
when an association is not already set on the record/model.
This sets up providing defaults before a stack begins walking the
dependency tree. This way a record can set polymorphic data on
a model it depends on and the stack will be able to traverse the
associations.