Preserve constraint names

Constraint names are now preserved, index, join and foreign keys will store it. It will contain a generated or a given name. Constraint names must now be unique within a schema. Foreign key naming is now done by the DefaultNameGenerator, ensuring unique name generation. Join names are also generated only by the DefaultNameGenerator.

Constraint names can now be used as a handle to drop the constraint.

 

This is actually indicating we probably need to update the code. 42522 is AmbiguousConstraint, which can no longer happen now that we have per-schema name and enforce it everywhere.

The error itself and handling PostgresServerStatement#deferConstraints() should probably be removed.