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

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)
schema is actually not used in legacy (just ignored), as sqlite3 has no support for that, so maybe adapt the docstring entry for that