Handle constraint_validations plugin being loaded twice with different options

Because the database only keeps track of a single validation table,
this doesn't have much effect other than making the class level
accessor return correct information.
Allow for per-model/per-validation type customization of validation options in constraint_validations plugin

This commit adds a :validation_options option for the plugin,
which allows you to modifying the validation options per
model/validation type combination.  One of the uses for this
is when using the constraint_validations plugin in combination
with the auto_validations plugin.  If you have a NOT NULL
constraint on a column and a validates_presence constraint on
the same column without the :allow_nil=>true option, then you
can end up with duplicate validation errors.  With this new
support, you can just pass
:validates_options=>{:presence=>{:allow_nil=>true}}, and that
will ignore nil values in constraint_validations, so they will
only be caught by auto_validations.

Unfortunately, this commit needs to change
Database#constraint_validations in a non-backwards compatible
manner.  Now it stores raw rows for each table, instead of
arrays of validation method call arguments.
Make constraint_validations plugin reflect validations by column

This adds reflection information when using the
constraint_validations plugin, similar to the support in the
validation_class_methods plugin.  The two are not compatible due
to differences in the underlying API.

To implement this easily, the private constraint_validation_array
now takes two arguments, the second being the hash of reflections.