Fix //guest/matt_armstrong/jam/bug/3/...
(as well as 2/... and
1/...).
Introduce a pass *before* make0() that propagates INCLUDES
relationships fully thruout the dependency graph. bug/3 was
caused by make0 trying to do too much at once. You can't
properly deal with cycles in the INCLUDES graph and correctly
determine dependencies in one pass.
We now have three passes through the dependency graph in make.c
1) make0bscan() - bind and scan all targets in the tree
2) make0includes() - gather all INCLUDES from sub-INCLUDES in
a way that is safe from cycles in the INCLUDES graph.
3) make0() - fate determination
TODO: verify correct bindtarget() use in make0bscan() and
make0includes()