Discount distribution

Total discount amount is now distributed over all discount lines in a
similar fashion as when done over items: to make sure that the full
amount is distributed while minimizing rounding error.

Also added `Cart.totalGrossVatAmount` and `DiscountLine.effectiveDiscountAmount`

ping @xiaodong-izettle, @MrShish  or @puj 

This change makes this package contain everything vital for us to be able to use it in other projects as far as I can see.

Also: Suggestions for clearer naming convention (especially on the main Cart object) are welcome!

  

Maybe you'll say I'm doing early optimisation here, but do we have any better solution? Lots of auto boxing/unboxing will happen here...