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 `chunk_size` 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.
What is the advantage of working with a `Session` here (and do the commit and rollback manually, opposed to what it was before)? 
I am not yet fully familiar with all those SQLAlchemy features, but I thought we did, untill now, just used the 'core' with engines and connections, and not the higher-level abstraction with ORM.