Introduced the TestDrivenInstaller

AMI::TestDrivenInstaller aims to make it easier to safely compose
multiple installers together. It does this by requiring installers
to specify a test to check if they need to be installed and if not
then the installer is skipped.