Added chunksize argument to to_sql

Large dataframes may fail to write to a database in one go due to packet size errors .  This add a `chunksize` parameter which will write the dataframe to the database in batches.  See https://github.com/pydata/pandas/issues/7347 .

Notice that there is quite a bit of code duplication between the SQLAlchemy and legacy APIs. This could be factored out if desired at the cost of a few private methods.

Closes #7347
OK, then we can just leave it like this (it's only one line longer, and for the rest equivalent). If we raise the required version, we can always clean it up