Cart: Fix calculations for multiple cart-wide discounts

All discounts (positive or netagive) are now applied to the cart's gross
amount, one at a time. This makes for example two consecutive 10%
discounts result in a 19% discount instead of the previous 20%.

* Added some more javadoc for non-public methods
* Canged from `new BigDecimal(long/double)` to
  `BigDecimal.valueOf(long/double)`, as this is the preferred way.

Closes #82