This applies a relatively simple solution for fixing some unintuitive cases in the unit handling code.

Currently entering `-1m50cm` evaluates to `-0.5m`, and similarly `1'6"` evaulates to just half a foot.

So effectively there's an implied `+` just between the numbers, which is quite confusing.

This works by adding parentheses so the negative distributes to the block of values before the next operator.

For example:

Before | After |

-1m50cm + 1m -2m50cm | -(1m50cm) + 1m -(2m50cm) |

-4m + 0.5 / -1.1 | -(4m) + 0.5 / -(1.1) |

-4m + 0.5 / -1.1 + -7m50cm * 3 | -(4m) + 0.5 / -(1.1) + -(7m50cm) * 3 |

-1'6" | -(1'6") |

-5m50cm + 1m * 4 - sin(6)m + 6m50cm - 8m70cm | -(5m50cm) + 1m * 4 - (sin(6)m) + 6m50cm - (8m70cm) |

-1m50cm*2 | -(1m50cm)*2 |

-1m50cm-1m50cm-1m50cm | -(1m50cm)-(1m50cm)-(1m50cm) |

1e-2m | 1e-2m |

-1.87E-3km | -(1.87E-3km) |

-1e-2cm | -(1e-2cm) |

-18 m * -17cm | -(18 m) * -(17cm) |

I don't see much of a downside to this, especially because it's a contained step and doesn't touch any of the other unit handling code.