Fix https://github.com/julianhyde/optiq/issues/180, "Common base class for TableFunction, ScalarFunction".

Add interface Function, which becomes base class of TableMacro (previously TableFunction) and ScalarFunction; rename Parameter to FunctionParameter; rename Schema methods getTableFunctions to getFunctions, and getTableFunctionNames to getFunctionNames; rename TableFunctionEntry to FunctionEntry.
Fix https://github.com/julianhyde/optiq/issues/215, "A Schema should not have to remember its name and parent".

Remove getName() and getParentSchema() methods from Schema; keep them in SchemaPlus; add name field to OptiqSchema.

Obsolete MapSchema.
Fix https://github.com/julianhyde/optiq/issues/216, "Inconsistent use of provided operator table causes inability to add aggregate functions".

Now you can specify via the Frameworks.getPlanner interface a SqlOperatorTable that contains a user-defined aggregate function, and the query will validate appropriately.

Added a test case for https://github.com/julianhyde/optiq/issues/217, "Validator should reject non-aggregate expressions in SELECT clause with aggregates".
Add tests that a query with aggregate expressions in the SELECT clause is considered an aggregate query, even if there is no GROUP BY.

Turns out that validator already did the right thing per https://github.com/julianhyde/optiq/issues/217.