Added rebuild(), always clean when building.

Rebuild is based on a build.stamp file and the last modified time of all
sources. It's primitive, but should hopefully serve our needs when rebuilding
upgraded packages.
Wired up package upgrading.

I already need to totally revamp this, but I'm committing this for now since it
works, just not nicely.

The sticky wicket is that when upgrading, I need to build the full dependency
graph upwards and downwards for the to-be-upgraded package. Downwards meaning I
need to upgrade all packages on which the target package depends; upwards
meaning I need to then go back and leaf-out the tree for all packages that
depend on any of those packages.

I already do this now, but iteratively and with lots of repeats and not in
topographically sorted order (the last one being important for correctness). I
need to build the tree, update the source for all packages involved, rebuild
the tree, and then traverse it topologically to ensure that I deal with
packages prior to their dependents.

Yay for complexity.