Introduce the new composer plugin system.
Move getContaoRoot() into Plugin.
Manage the runonce files via a standalone RunonceManager.
Manage the composer.json updates via a standalone ConfigManipulator.
Live inject requirements.
Handle the command events in the plugin now.
Add PRE_FILE_DOWNLOAD event listener draft.
Add the composer.phar to .gitignore.
Fix the license key in composer.json.
Use global declaration of RunonceExecutor in system/runonce.php.
Introduce unit tests.
Update dependencies.