Multi-action promotions

Changes to make multi-action promotions work as you'd intuitively expect. 

Previously selecting the best promotion meant selecting the best promotion adjustment for each adjustable, rather then selecting the promotion with best discount overall when all it's adjustments are tallied up. 

Promotion actions are now given an accumulated total so that multiple actions don't exceed the available possible discount and percentages can be calculated from the total after previous discounts have been applied.

Also there's a few minor commits so that I could get the test-app to be made on a windows machine.

This is my first pull request, so any and all criticism would be welcomed. 
Line is too long. [113/100]<br>Prefer `inject` over `reduce`.