Addressed Jinfeng's review comments
1. Implement ExpressionValidator.visitFunctionHolderExpression to validate
   i. no nested aggregate functions within another aggregate function
   ii. constant expression validation for function arguments expecting constants
2. Revisit ExprVisitor.visitFunctionCall to throw exceptions if the expr is already materialized
3. ConstantExpressionIdentifier: partial implementation. Currently not used code.
4. few nits