Rdom refactor

This refactor removes some redundant data between RVar and ReductionVariable, and reduces the volume of code required to support new RDom dimensions. 

Also, this PR adds support for up to 8 dimensional RDoms.
I don't think this should be undef. It should be Expr()