Speed up association_pks many_to_many setter method by using Dataset#import

This combines the 4 separate setter method implementations into
a single method, and uses Dataset#import so that on most databases
it will do multiple imports in a single query, which should
provide a significant speedup, especially when there is significant
latency between the database and the application.
Don't create association_pks getter/setter methods for one_through_one associations
Add Dataset#empty_from_sql, core support for default empty from tables

This previously has been handled by overriding select_from_sql
in each of the adapters that supported this.  However, since it
is reasonably common (and SQL92 requires a FROM clause for SELECT
queries), add core support for the idea.
Make import/multi_insert insert multiple rows in a single query using a UNION on Oracle, DB2, and Firebird

Now that empty_from_sql has been added to core, multi_insert_sql
can use it, which enables support for the :union strategy on
databases that support empty from tables.
Recognize another disconnect error in the postgres adapter
Recognize another disconnect error in postgres adapter

Also, make sure that the regexp is anchored at the start in
all cases.