Adding support for VariadicExpression

This involved creating the VariadicExpression class (as a subclass of NaryExpression) and change about 6 classes to use the new class. Test code was changed accordingly where necessary.  There are some mongo deviations here but they seem to be conscious decisions on our part.