separate out mariadb/mysql implementations but remain monolithic
Fixes to the MySQL/MariaDB dialect so that mariadb-specific features such
as the :class:`.mariadb.INET4` and :class:`.mariadb.INET6` datatype may be
used with an :class:`.Engine` that uses a ``mysql://`` URL, if the backend
database is actually a mariadb database. Previously, support for MariaDB
features when ``mysql://`` URLs were used instead of ``mariadb://`` URLs
was ad-hoc; with this issue resolution, the full set of schema / compiler /
type features are now available regardless of how the URL was presented.
After much discussion it seems premature to formally separate the
mysql/mariadb dialects to be mutually exclusive, however we'd like
to standardize on how dialect-exclusive behaviors are architected.
For now, use an approach of MariaDB "shim" classes which provide
MariaDB behaviors into all relevant MySQL classes up front. Where
behaviors are mutually exclusive, support `_set_mariadb()` methods
that enable the mariadb version of things.
this approach may or may not have resilience against future
divergences in mysql/mariadb , but at least starts to separate the
source code for the two databases and hopefully provides a clearer
separation of concerns.