Cart various fixes

When starting to applying the cart library to one or our internal projects (no names mentioned), I discovered a few areas for improvements:

* Using `Float` instead of `Double` when representing `vatPercentage`
* Fixed a bug where discounts with null for either percentage or amount threw a NPE
* Utility method for grouping VAT amounts

Added tests for the fixed bug and the new utility. 

Note to reviewer: the above issues were each fixed in separate commits and is probably easiest to look at separately.

ping @xiaodong-izettle or @MrShish 
Just curious, why prefer `Float` over `Double`? :)