[!!!][+FEATURE] New package bootstrap mechanism
This changeset introduces a new way how packages are registered and
initialized. The Package Manager now requires that each package provides
a "Package" class in its top namespace. When the package system is
initialized, the boot() method of each package is called which allows
for (very) low level configurations and operations such as registering
a custom class loader or defining signal-slot connections.
For better performance, package states are now stored in a PHP file
instead of the PackageStates.yaml file. The PackageStates.php file is
created automatically if it didn't exist before.
Also moved some constants from the Package class into the
PackageInterface and modified the PackageManagerInterface.