new class PaymentMethodFilter will take metadata, gateway global, and set of selections (country, currency, maybe top-level method), and return a list of available payment method codes (with selection weight?).
FormChooser (renamed GatewayChooser) will call PaymentMethodFilter with each gateway in turn and
select from the gateways with non-empty lists, ranked by selection_weight then by number of different fully specified submethods
Somewhere in the form rendering pipeline we also call PaymentMethodFilter to get the list of submethods to show
Bonus: we might be able to get rid of Special:FundraiserLandingPage
when no top-level method is specified, paymentMethodFilter can return a list of top-level methods available in the user's country.