Implement autogenerate detection for foreign key constraints

Issue #178
Update and add some tests for checking fk

fixes issue #178
Add composite fk support, add more tests
Add _add_fk_constraint and _drop_fk_constraint to render
Some refactor of _add_fk_constraint
Fix failing unittests and update compare_fk method
fix symbol
Fix source_schema argument in BatchOperation.create_foreign_key
- Repaired the inspection, copying and rendering of CHECK constraints
and so-called "schema" types such as Boolean, Enum within the batch
copy system; the CHECK constraint will not be "doubled" when the table is
copied, and additionally the inspection of the CHECK constraint for
its member columns will no longer fail with an attribute error.
fixes #249
- Added two new arguments
:paramref:`.Operations.batch_alter_table.reflect_args`
and :paramref:`.Operations.batch_alter_table.reflect_kwargs`, so that
arguments may be passed directly to suit the
:class:`~.sqlalchemy.schema.Table`
object that will be reflected.
Merge branch 'master' of https://bitbucket.org/mmarquar/alembic
- Fixed bug where the "source_schema" argument was not correctly passed
when calling :meth:`.BatchOperations.create_foreign_key`.  Pull
request courtesy Malte Marquarding.
- add tests
- Merge branch 'add_fk_check' of https://bitbucket.org/akamyshnikova/alembic into pr32
- complete merge, get all tests passing
- use 'foreignkey' literal

Conflicts:
	alembic/autogenerate/compare.py
	tests/test_autogenerate.py
- refactor the FK merge a bit
- getting at attributes of FKs varies a bit on SQLA versions,
so implement an _fk_spec() called for all FK inspection
- to enable include_object() filters and allow the FK constraint
code to flow like that of indexes/uniques, change the approach
so that we deal with an _fk_constraint_sig() object again which
contains the real ForeignKeyConstraint() within; we need this
anyway for include_object, but also allows us to use the standard
"drop_constraint" call for rendering.
- enhance tests in test_autogen_fks to support real FK databases like
Postgresql, MySQL, add in InnoDB flags and ensure that FKs refer
to real primary key constraints for PG support
- implement and test include_object() support for FKs
- inspectors all have get_foreign_keys(), no need to check
- repair the drop_constraint call to quote the "type" and table
name correctly, run all constraint drops through drop_constraint()
for rendering
- fix up schema identifiers for foreign key autogens
- name the include_object hook "foreign_key_constraint"
- changelog and other doc updates, fixes #178
- fix drop_constraint() unit tests and add two more for FKs
- Added :paramref:`~.Operations.batch_alter_table.naming_convention`
argument to :meth:`.Operations.batch_alter_table`, as this is necessary
in order to drop foreign key constraints; these are often unnamed
on the target database, and in the case that they are named, SQLAlchemy
is as of the 0.9 series not including these names yet.
- rework the docs on batch + constraints, which remains subject
to a lot of caveats and problems, some to be resolved in SQLAlchemy 1.0
- reword the first paragraph about offline mode to better flow
from the preceding sections.
- fix drop_foreign_key to include that this only works with SQLite
as stated
- naming convention limited to SQLA 0.9.4 or greater
- repair the rendering of add_fk_constraint(), quoting there too
0.7.1