Fix issue with a looped ReductionRule1 returning subtype

Currently, the use of a ReductionRule1 inside a loop (oneOrMore, zeroOrMore, nTimes) or optional, where the second type is a subtype of the first, fails to compile despite being semantically ok.

This pull request fixes this.

ie. From the test:
```
def IntsAndDoubles: Rule1[DoubleExpression] = rule {
    "1" ~> (s => IntExpression(s.toInt)) ~ oneOrMore(" + " ~ AddDouble)
}

def AddDouble: ReductionRule1[Expression, DoubleExpression] = rule {
    "0.3" ~> (s => DoubleExpression(s.toDouble)) ~~> ((l: Expression, r: DoubleExpression) => DoubleExpression(l.value + r.value))
}
```

This fails to compile, despite `DoubleExpression` being a subtype of `Expression`.