Support dependencies in make actions.
Support smart (fast) rebuilding.

If a package needs to be built and it is currently building, we simply wait
for the result. We do the same for finding the current package list.
This makes the whole just in time build process a lot snappier.
Remove the legacy extramake thing.