Implement retry status for sustainer processing

Added a new setting that makes the number of retry attempts for a sustainer charge configurable (fundraiser_sustainers_max_processing_attempts). Valid values for this setting are 3 - 10.

Also implemented a new retry status for sustainer processing. The sustainer record will now go into a 'retry' status until it reaches the maximum number of retry attempts. The order itself will remain in a pending future payment status during the process.

There were some subtleties within. Previously the attempts column was updated after a sustainer donation was processed, it is now being incremented at the time it's selected for processing. The module's implementation of hook_fundraiser_donation_decline has also been replaced with a method that can behave differently depending on how many attempts have been made to process the transaction.
Implementing the new fail hook here. Salesforce code now lives in a Salesforce module. Extracted as-is from fundraiser_sustainers_fundraiser_donation_decline().