Merge remote-tracking branch 'origin/2.0'
Shift the target to 2.1
Missed a bit
Merge remote-tracking branch 'origin/2.0'
Merge remote-tracking branch 'origin/2.0'
Merge remote-tracking branch 'origin/2.0'
Multiple factory definitions preparation
Throw ClassNotFoundException when a class cannot be found when creating Factory instance
Helper methods for getting group and model without group
Combine group attributes and none group when creating factory

When we create a factory with a group name passed in, we combine any
attributes set on the group factory definition with the base factory
(not a group one). This means we can use the group factories to
overwrite the base factory
Test that group definitions are working
Build attributes array before calling attributesFor
Add tests around replacement generators

A
Make sure we are replacing generators in group factories
Change ClassNotFoundException to ModelNotFoundException