Ipv4 RangeAggregation behaves like other ranges

As noted in #801

Added Ip4ExpressionRange
Updated Ip4RangeAggregationDescriptor to take ```params Func<Ip4ExpressionRange, Ip4ExpressionRange>[] ranges```
Updated integration tests