Split into evaluateDirectly() and evaluateSilently(), to be able to treat errors more gracefully. Add documentation for constant evaluation.