Installer and DatabaseInstaller have a lot of weird and specific things in them that make them hard to reuse. For example, Installer::__construct() resets the service container. I plan to factor out some of the logic from DatabaseInstaller into a Task class hierarchy. Task::execute() will receive a context object with a relatively narrow interface, feasible to implement outside of the installer such as in the proposed core addWiki.php.
Installation will run a list of such tasks. It will be similar to the current "steps" list except with more OOP.