7.x 4.x 579 ASPCA recurring

This code checks for:
 * the existence of non-recurring-enabled payment gateways
 * whether the donation form has a user-facing 'recurring donation' option.

If the conditions return true, it shows and hides the payment method using the States API. This prevents a donor accidentally choosing a monthly donation and a payment gateway that can't handle it.

The code also includes a webform validation function that returns a Drupal error if client-side States API validation fails.

This works for a 'recurring' field that is a checkbox, radio buttons, or a select menu.

KNOWN ISSUES: this doesn't yet play well with springboard_frontend theme. Springboard_frontend uses a DOM structure that messes up the show/hide functionality. The theme should be patched separately.
There are also helper functions in fundraiser that will find a component field for you. You'll want to check that your solution can still find the field if it get's moved into a nested location.

    _fundraiser_webform_parse_component() // will parse the path to a given component
    _fundraiser_webform_find_field() // will return a reference to the found component