Ensure that demand may never be sub-zero

If we arrive at a point where the sum of the demand of all users is
below zero, a SubZeroDemand error is raised.

This would occur if using negative values in a User::WithCurve, where
abs(negative_value) is greater than the sum of all other user demand.