Support dotted identifiers in functions

When substituting identifiers matching the function's parameters with
the arguments of a function call, break identifiers of the form 'X.Y'
into a PeriodExpression if 'X' is the name of one of the function's
parameters, and substitute the 'X' identifier with the matching
argument.
Add @Immutable to UserFunction
Add @Nonnull to UserFunction.replaceArguments
Support SymbolLookup in expressions

Update the existing code to pass a SymbolLookup received by the
expression parser to the created expressions that now store a
SymbolLookup reference. Remove ExpressionWithOverriddenSymbolLookup, as
it doesn't make sense anymore.
Fix Javadoc on LogicalLineParserTest.parse()
Consider the context in UserFunction's hashCode() and equals()
Add tests for user-defined functions