Unify SQLTable code for fallback and SQLAlchemy mode and move differences into database class

In discussion of the SQL API in #7960 , it has been suggested that it may be possible to factor out differences in SQLAlchemy and fallback backend .  This is an initial attempt to do so.  Now `SQLTable` is uncoupled from the backend.  `PandasSQL` is base class for `SQLDatabase` (SQLAlchemy backend) and `SQLiteDatabase` (fallback backend).  This allows for the removal of some duplicate code.