7.x 4.x Upsell feature port from Springboard 3

The contents of this pull request is included in #398 which also includes bugfixes, offsite recurring functionality, and PSI gateway integration.  Review that instead.  I will discard this pull request once the final form of upsell has made it into 7.x-4.x.

This now includes Jeremy's cardonfile and major fundraiser refactoring from #383 that got merged in to 7.x-4.x.

This branch includes:
- Almost entirely rewritten upsell module.
- Removal of the decouple option, as all upsells are decoupled from now on.
- Updated blockUI JS for the modal.  Requires jquery_update for jQuery 1.7.  The previous version had a bug with detecting jQuery version.
- The modal is now drupal themable.
- Per node upsell email settings via the email wrappers module.
- Added upsell hooks to add additional custom settings that differ from the original donation.
- Added hooks to modify or act on the upsold donation and the master donation.
- Hooks are documented in an API file.
- Added documentation everywhere.
- Used the donation object instead of order where possible to take advantage of existing Springboard 4 code.

Salesforce integration has been broken out into its own submodule.  That includes:
- Allows for a custom campaign ID for the upsell series of donations.
- Sends an Upsell object to Salesforce with references to the upsold original donation and the recurring donation.