Make add_foreign_key work on HSQLDB

HSQLDB gives a java.lang.ArrayIndexOutOfBoundsException exception
when trying to execute SQL such as:

  ALTER TABLE "B" ADD COLUMN "F" integer REFERENCES "A"("D")

This splits the operation into two separate ones, one that adds
the column, and one that adds the foreign key constraint to the
column.  HSQLDB can execute the two separate queries correctly.
Add support for foreign key parsing to the jdbc adapter

This uses the JDBC metadata functions to get the foreign key
information.

This also splits out a new metadata_schema_and_table private
method that schema_parse_table, indexes, and foreign_key_list
can all use.

This has some small spec changes to get the specs to pass on
more databases (hsqldb/derby).  They were previously failing
due to limitations in these databases, not due to Sequel itself.
Add support for foreign key parsing on Oracle

I was testing the generic jdbc foreign key support, and it didn't
work on Oracle, due to a fairly literal interpretation of how
the JDBC methods work (only including foreign keys referencing
primary keys, not other unique keys).

This dataset is based on the JDBC query, but cut down and modified
to also deal with foreign keys reference unique keys.

Oracle also doesn't like duplicate unique indexes, and there
doesn't appear to be a reason to use them in the spec.
Mark some columns as NOT NULL in a spec to appease DB2