Add basic foreign key generation to PostgresSchema.

There is a ton of copy + paste here. I'll refactor it out in a future
commit.
Add initial pass at reflecting foreign keys in postgres.
Remove support for update with joins.

This feature is inconsistently implemented or not implemented across all
drivers. What is implemented consistently across all drivers is the
ability to do update/delete with subquery conditions. This will be the
recommended/documented way to preform multi table update/delete
operations.
Add a BaseSchema class and move methods that are purely duplicated down.
Fix coding style errors.
Use mocks to fix test failures.

Postgres keeps one connection between multiple PDO instances. This
causes spurious failures when tests are run in suites.
Add sort conditions to normalize result ordering.

Postgres orders inconsistently without an explicit order. Set an order
to keep results the same always.
Quote aliased field names.

Aliased fields need to be quoted for postgres to properly return the
names in the result sets. Without quoting names are returned as
lowercase version. An alternative workaround would be to snake_case
aliases and inflect them back when building results.
Merge pull request #1378 from markstory/3.0-postgres-fk

3.0 postgres foreign keys
Use specific ordering.

Fixes failures in Postgres.
Make startQuote/endQuote protected.

These properties are unlikely to change and have no need to be public.
Update tests that were causing failures in MySQL to use mocks/generated
objects instead. This tests the actual functionality in isolation
better.