Requests for comment/Moving database abstractions out of MediaWiki core

Just quick notes for now.

Background
We "support" mysql, postgres, sqlite, oracle, and mssql as database abstraction layers in MediaWiki. But in reality only mysql and sqlite are well supported.

Problem
For oracle and mssql especially, there are very few developers who can support those codebases, and don't frequently have the time to do so. Skizzerz, for example, maintains the mssql implementation, but only plans on maintaining the LTS releases and doesn't have time to keep up with master's development cycle. Even for DBMSes that are free (postgres), bundling the libraries in core when they may not fully support the latest version or are partially broken gives false pretenses to users about the level of support when they see the options available in the installer. If the user needed to explicitly install the libraries themselves, they would have knowledge of how well-supported said DBMS is and can make a more educated decision on whether or not to go with it for their mediawiki installation. Additionally, our unit test suite does not touch at all on alternate DBMSes, which further exacerbates the issue of not knowing how well-supported or buggy a particular implementation is.

Proposal

 * Allow extensions to register custom database types.
 * DatabaseBase::factory
 * Boostrapping the installer/updater?
 * Move postgres, oracle, mssql to extensions?
 * Some way to run the unit test suite using a particular DBMS as a backend (instead of sqlite)?
 * Would be nice to figure out a way to get jenkins to automatically run those, but may be tricky with the commercial solutions; likely relying on third-party infrastructure/people donating slaves
 * Also DBMS-specific tests where needed
 * Should we move mysql and sqlite out too?