Support for "forcing" builds of up-to-date targets

Argument for both make() and update().  For make(), force forces
the current target only, and force_all forces rebuilding of all
its dependencies too.
Support for expiring targets
Tie code dependencies more strongly to the environment

Whenever the environment is recreated, the code dependencies
will be rebuilt to stop them getting out of sync.
Support for "utility targets" that will always be defined.

A little like clean, but (currently) these cannot be depended on
or modified.  There are only two at the moment: "deps" to install
all listed dependencies (or check that they are installed) and
"gitignore" that adds file target names to a .gitignore file.
The "deps" one is particularly special because it needs to run
*before* the packages are loaded, so there's a special case in
$make to make that work.  It's possible that replacing that with
standalone methods will be better, but this means that
    maker deps all
will be something that can work.