[r=Rocky] Eval context and error messages with source string

Added an evaluation Ctx which currently only contains the
input source. The Ctx bubbles through the entire computation,
allowing error messages to relate back to source code.

E.g. `g := func() {}; f(g())` -> "g() used as value"

Also fixed bug in function calls of form `f(g())`, where logic was based
on the number of arguments in the expression, 1.

Logic should be based on the number of outputs of `g()`