add a simple logging package

Also add --debug option, and use --debug + log to optionally dump the
AST after parsing the build script.
runtime: use log package to control printing message about loading plugins
runtime: use log package to control dumping the DAG
dag,runtime: use log framework to control build-time output
runtime: silence a noisy test
update obsolete references to FileFinder, GlobNode in comments
dag: node.Expand() must not return nil

This lets us simplify DAG.Rebuild() a bit, nudging the test coverage up.
Also clarify the contract for FuObject.Expand(): the "never returns
nil" rule applies to FuObject and Node.
dag: cleanup cruft in tests
log: add DebugStack()
runtime: add unit test for evaluateCall()
runtime: expand function arguments before calling the function

If nothing else, this means
  println("SOURCES = $SOURCES")
actually works as you would expect, by expanding $SOURCES.

More subtly, it helps to highlight the current unexpanded state of
build rule local variables: e.g. SOURCES can be a FinderNode even
though the DAG has already been rebuilt, expanding that FinderNode in
the DAG.
runtime: drop mock arg list from FunctionCallAction.String()
dag: use bit.Set's Next() method for iteration instead of Do()
dag: remove unused setToSlice() helper
types,dag: make Dump() methods report Fubsy type names, not Go types
dag: improve FinderNode tests a bit
dag: make {New,Make}FinderNode() variadic functions

They're used far more often in test code than production code, and it's much
more convenient this way.
dag: cache the result of FinderNode.Expand().
dsl: use raw strings in unit tests
doc: clarify meaning of "dependency" (for Java weenies)