Add a PaymentProvider
class to model Payment Gateways with multiple Payment Methods
Currently, for historical reasons, the Solidus Source conflates the idea of a payment method and a payment gateway/provider.
When the payment system was first conceived, there were only two payment methods: "Check", which was a bogus payment method that essentially meant "We'll deal with it in cash", and "Credit Card", which had the additional complexity of needing a "Gateway" to process the credit card payments.
Things have changed since then. Companies have emerged that handle many payment methods (credit, credit card, direct debit, Apple/Android pay, SEPA). Within Solidus core, we have taken great care to allow multiple payment sources, so now we have the ability of identifying a nonce as a "Braintree token" or a "Spreedly credit card" - but we still conflate "payment method", the option a user chooses to pay, and "payment gateway", the company processing payments.
This PR changes that by moving the API calls from