The installer class is easily the most complex right now and it can stand little more being added to it.
So this issue tracks the work required to refactor it into a more manageable structure.
Proposed new structure:
installation service - class that provides [relatively] granular installation operations (eg. create db table, drop db table etc.);
installation requirement - class that checks whether a specific requirement is met + other requirement support classes;
installation step - class that represents a single step in the installation process (a step can perform one or more operation).
The installer class is easily the most complex right now and it can stand little more being added to it. So this issue tracks the work required to refactor it into a more manageable structure.
Proposed new structure: