Move address validation logic from form into model
Ensure all URL names use dashes (not underscores)

Only search_default needed correcting.
Fix wrong index used in FixedPriceBenefit

Bad index in `last_line = covered_lines[-1][1]` (previously [-1][0])
caused rounding error. When you have 3 products for £7 and benefit 3
things per £20, each product would get discount £0.33 which doesn't sum
up to £1. The existing code handles this but bad indexing makes it fail.
A test case reproducing the issue was added.

Fixes #742