Separated VisitorInterface into ExpressionVisitorInterface and PatternChildVisitorInterface which allows for improvements to the internals of the evaluator.