Evaluate an expression. The optional type provided to this method is a hint (not a requirement) for the evaluator
to resolve the expression to a compatible value. The evaluator is not expected to perform any conversion but
rather filter out incompatible values from its result.
expression - the expression
type - The expected type of expression result, may be null.