Abstract operator stuff out into an Operator class with reduce and apply methods to handle mixed-type arguments.
Abstract out variadic and infix operators to super class to reduce boiler plate