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.