Add reference equality, a null literal and optional input parameters.
Add test.Reference template to test the new features.
A method isConstant in Expression was introduced, because an ObjectLiteralExpression may be null but still be a constant.