Add donation button to the enrollment success message

Changes:
* Add donation end-point
* Make donations configurable
* Added donation button to dashboard
* Generalize merchant defined data for payment processor

Notes:
* To enable this, you need to use model-based configuration.  Enable `DonationConfiguration` and `DashboardConfiguration` (enrollment message timeout) in Django admin.

* This PR includes client-side validation and introduces a new client-side analytics event `edx.bi.user.payment_processor.visited` fired when the user clicks the "donate" button, right before we send them to the external payment processor.

* This PR does NOT include any style changes.

Reviewers: @dianakhuang @stephensanchez @AlasdairSwan 
FYI: @andy-armstrong @chrisndodge 

[ECOM-445](https://openedx.atlassian.net/browse/ECOM-445)
There was an obscure problem with using the sinon library in beforeEach/afterEach methods, so our recommendation is to always create the requests in the test instead. @cahrens probably has more information.

I believe this was the bug:

https://edx-wiki.atlassian.net/browse/STUD-1040

and here was the PR:

https://github.com/edx/edx-platform/pull/1951