Fix to merge code from `_create_table_statement` and `get_schema`

Closes #8097

Reorganized a lot of the SQL schema creation code.  Now database table is not dropped / create when `PandasSQLTable` object is instantiated, but instead when `insert` method is called on it.  This allow us to `get_schema` to generate `CREATE TABLE` code without actually creating the table.
(Includes updates from #8083, so will have to be rebased when that is merged)
But that is only for sqlite of course, and for now we also have to support the mysql drivers, thus ignore my comment.