tests against sqlalchemy main test suite

This basically has two parts:

1. Add all the requirements that are used in the main tests suite
2. Fix a bunch of bugs in the sqlalchemy adapter
3. Add support to the sqlalchemy adapter that the sql layer now supports
There are two tests that require this, both in `test/engine/test_reflection.py`:

`test_has_schema` fails because we didn't define `has_schema`, that test is the only place where the method is called, and postgres is the only dialect with an implementation.

`test_reflect_all_schemas_default_overlap` fails because of an ambigous group name. I created a card for it.