Allow multiple mode payments #6448

It allows sale payments using multiple gateways.
it is nice that the validation happens in one place and downstream modules can override in single place, but this could become an anti pattern ?