Allow specifying other model attributes when creating custom benefits or conditions

For example, a custom benefit class might want to make use of
get_applicable_lines, which needs a range on the benefit.
Don't break sentence spelling/grammar in German.
Make Benefit classes more reusable

Custom Benefit classes can now derive from PercentageDiscountBenefit or
AbsoluteDiscountBenefit and dynamically pass a discount value resp.
percentage as well as a maximum total discount amount.
The code handles the no applicable lines case well without this statement

At also allows me to remove the complexity exemption.
Merge pull request #1392 from machtfit/offer-improvements

Offer customisation improvements