Use widening with addition and subtraction

The original design decision was made in part to anticipate changes
Julia 0.4. Unfortunately, this runs into major trouble with
reductions. Since we need a package that works on 0.3, these changes
seem necessary. Once someone implements widening in the reduction functions
for 0.4, this change can probably be reverted (on the `julia 0.4-` branch of this package).