Add custom invalid exception

This adds a custom invalid exception that is thrown when an
`ActiveRecord::RecordInvalid` occurs. This is a nicer interface
than ActiveRecord's error and can be used when faking/stubbing
in tests.