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 
Well, if you ask me, I'd probaby prefer `Double`, but there are two benefits of having a Float here:
* VAT Percentages are normally represented as whole numbers, e.g. 12%, 20% etc. Only a few counties actually have decimals (for example FR wih 2.1% and 5,5%) but then only with one decimal digit. `Double` might indicate the possibility of more fraction digits and possibly confuse callers (long shot, but nevertheless).
* iZettle has other legacy code where VAT percentages are represented as Float, and using this library will be really painful if we enforce Double.