refactoring eval to eval a prog (rather than expr), misc tidying and an
eval_func_call bugfix

Plot_eval is now for a prog, plot_eval_expr is for an expression.
Added in some more debugging output and tracked down a silly bug in eval_func_call.
Tidied up test output