Write debug information to stdout.

Stderr should be reserved for errors in Fabrique file validation.
Allow less verbose print() commands.

If `--debug='trace'` has been passed to Fabrique, we’ll show the full filename, etc., information. Otherwise, we’ll just print the value.
Print string literals as literal strings.
Treat `fab --debug` like `fab --debug='*'`.
Add a covariant Function::type() method.

We know that the type of a Function is always a FunctionType.
Refactor function calls to use callbacks.

The previous function-call code introduced an AST/DAG layering violation: a dag::Function needed a reference to an ast::Function in order to do its work. Now, we can define arbitrary callbacks to handle function calls. This will be extra nice when we start writing plugins that expose non-AST-based functions!
Refactor calling logic into dag::Callable.
Refactor DAG-building out of EvalContext.

Evaluating an AST expression is separable for building some DAG nodes: a
plugin might do the latter but is unlikely to do the former!
Move EvalContext from dag to ast namespace.

ast::EvalContext is about evaluating AST expressions, so it doesn’t really belong in the ‘dag’ namespace.