Improve algorithm min/max

This avoids a check for mismatched signedness when `SignedType.sizeof > UnsignedType.sizeof`: Indeed, in this case, the promotion is to the larger signed type, which means the straight up comparison always works: The second comparison to 0 becomes moot, yet won't be optimized away.

I also changed the `immutable bool` into a string mixin, as it makes a difference for -release but non-inline code.

Please submit to me any case you'd think would be relevant in the unittests.