Fundraising tech/notes/Draft:DonationInterface architecture refactoring

files for gateway config
Task: T291699


 * Omitting this file, or just setting it to an empty array, causes the submethod selection buttons not to show up.
 * For Ingenico, submethod properties define numerous properties that are related to processor interaction, including  (which end up in an inner array on the gateway's   property) and , referenced in  . For Ingencio's   submethod, there are also   and   properties.
 * For dlocal (AstroPay) the submethod property  is referenced in ,   and.
 * Currently unused for Adyen Checkout.
 * Despite the presence of the  property, this does not control which submethods/methods Special:GatewayFormChooser offers for a given country. Rather, this is in.

and
Task: T291794

is the only class that implements. Both are giant and should be divided into smaller classes with more limited responsibilities. Some responsibilities could likely also be moved into SmashPig.

Current areas of responsibility (2021/9)

 * Basic definitions for gateway: name, identifier, log identifier
 * Config: global or processor-specific from Mediawiki globals, adapter config in yaml files, account config
 * Processor interactions and setup
 * Payments, donor return, processor communication, responses, payment methods and submethods, transactions, statuses, CURL and XML interactions, building requests, donation attempt sequence numbers, postdonation processes, orphan rectification.
 * Data constraints, validation, order and processor request IDs, data transformation, normalization of errors and other things
 * High-level logging actions
 * Queues, message fields
 * Session handling: ensure session, session token, counting session attempts
 * Fraud filtering
 * Convenience methods for interaction with data object
 * UI setup: mustache templates, form fields, client-side validation and transformers, fallback currencies, show monthly convert