Fundraising tech/notes/Draft:DonationInterface architecture refactoring

and
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
 * Logging
 * 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