Created by: mogers
Summary: Unit tests for the QueryParser require the ability to compare QueryExpression's. Overriding equals() requires one to override hashCode() as well. This was done for FunctionExpression, SetExpression and Argument, but the code is a bit messy. This PR uses immutables to generate this code, making it less prone to errors.
Test plan: CI