Fix using of 'mysql_length' for composite indexes

Currently, one can specify the prefix length for an index
column using 'mysql_length' keyword argument when creating
an Index instance. But in case of composite indexes the
prefix length value is applied only to the last column.

Extend the existing API in way so that 'mysql_length' argument
value can be either:
    - an integer specifying the same prefix length value
      for each column of an index
    - a (column_name --> integer value) mapping specifying
      the prefix length value for each column of an index
      separately

Fixes issue #2704.
- changelog for [ticket:2704]
- use an isinstance() check, concerned a TypeError might be indiscriminate

Conflicts:
	doc/build/changelog/changelog_09.rst
most of these dialect=mysql.dialect() calls are redundant