[mcs] eval.cs: add EvaluateResult + EvaluateFull

Add EvaluateFull as the primary Evaluate method.
All other Evaluate methods (and Run) calls
EvaluateFull, which returns an EvaluateResult.

This introduces an easier to use API with the
ability to add more data in the EvaluateResult
instead of extra out parameters and method
overrides.