Give Records/RecordDelegates a collection factory

This should let us easily set up Collection subclasses in the event that
we want to do something special with the constraint_error calls.

I'm not really sure how I would want to handle errors on a collection,
anyway. It's almost certain they won't be able to be reliably mapped to
the individual record that the error relates to, but this way we are
welcome to try, or to just do something entirely different.