Add abstract methods for required driver features.

These methods are expected by Connection, and should be part of the
abstract interface.
Add stub methods for enabling/disabling foreign keys
Add SQL commands to disable constraints to MySQL and SQLite.

Postgres and SQLserver don't seem quite so simple.
Make postgres foreign keys deferrable.

Having deferable keys will be important for fixtures. If a constraint
is not deferable, it cannot be turned off temporarily. Since the current
schema tools are generally for creating fixture schema we'll assume
people want that feature as it is pretty handy.
Add disable/enable constraints for postgres.

Now that fixture constraints can be deferred, we can use the simple
version of disabling constraints.
Add disable/enable constraints for SQLServer.

I have no verified this, but it looks like it will work.
Remove dead code and reduce # of times tables are listed.

There is no reason to get the table list for each and every fixture
creation. The important part - the original tables - is unlikely.

This should help improve performance on apps with many tables, as you
shave N queries per test method which can all add up.
Disable foreign keys while fixtures are created/inserted.
Truncate fixtures in a transaction.

When unloading a test do one transaction per database connection. This
will be necessary when foreign keys are involved as truncate requires
keys to be disabled.
Disable foreign keys when truncating tables.

This fixes issues in MySQL where truncation cannot occur when tables
have foreign keys.
Drop fixtures inside a key disabled transaction.

Dropping tables with foreign keys is complicated, by putting it in
a transaction and disabling keys we can have a much simpler time of
removing fixtures using foreign keys.
Fix PHPCS error.
Fix typo in foreign key SQL.

Also cause truncations to cascade in postgres. Not cascading truncation
causes postgres to error out when trying to clean up fixture data.
Enforce specific ordering to fix failing tests.

With the addition of foreign key constraints some ordering changes
occur, this solidifies the ordering of results.
Fix truncate tests for postgres.
Fix issues with postgres.

Enabling constraints in postgres after dropping tables makes postgres
grumpy. It seems to work much better without the enable foreign keys
call. Foreign keys will be re-disabled, and then enabled on the
subsequent test method that inserts fixtures.
Fix some of the ordering issues in postgres.

Postgres is far more pedantic about constraints, and tweaking the
fixture order helps.
DRY out fixture manager.

Make common code shared across the various load/truncate/drop
operations.
Tweak fixtures and expectations to make tests pass.

Now that articles_tags has a FK, it always has to accompany the tags
table, which it wasn't in the OrmCacheShellTest. The ModelTaskTest
expectations also had to change becuase of additional fixtures.
Insert data in a different transaction than schema.

Postgres will puke if you try to alter schema and update rows in the
same transaction. While this makes the tests a bit slower, it is
necessary to have foreign key fixtures work with postgres.