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

This does not include Jeremy's cardonfile and major fundraiser refactoring from #383.  This branch probably conflicts with his because I added a parameter to `_fundraiser_sustainers_create_future_orders()` and he added a different parameter to it.  In another pull request I will change my code to play nice with his.

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.