Add constraint handling capabilities to connection

Still not entirely happy with this API. I like the use of kwargs to
specify handling of constraints but I want to refactor the Result object
into two different objects, with a meaningful addition operator for
both. I think the errors on an unsuccessful result should be able to be
accumulated, in case we're handling multiple saves and want to gather up
the errors for presentation to the user.

In either case, an unsuccessful result has no use for an affected_rows
attribute since it's going to roll back, nor does a successful one have
a use for a constraint_errors attribute.

Once refactored, I think it makes sense to simply initialize the result
objects with the number or error, without messing around with kwargs
there.