DONE: download sources from git repository, check if hash of each package has changed, invalidate the existing builds of that package
TODO: when calculating the build order in buildHelper.CalculatePackageOrder: skip packages that don't need to be rebuilt, and that don't depend on a package that needs rebuilding
TODO: after a successful build, reset the dirty flag to false
need to store a hash of the sources, and know which other packages depend on this package.
if a package is rebuilt, invalidate all packages depending on it
Cannot use eTag because that is for the whole project