Cleaning up ReductionOp (#1565)
* Cleaning up ReductionOp
- GridReduction inherits ReductionOp. A grid reduction is now
represented with just a single GridReduction expression (previously it
was with ReductionOp AND GridReduction)
- The runtime gridReduction code is extended to do block reduction as
well. This simplifies code generation as it does not need to generate
a separate block-reduction call.