Deep merge factory args

This updates factory args to deep merge, preserving defaults and
what was passed. This should provide increased flexibility
allowing associated records to be defaulted and have additional
args set on them.