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)
This may be our fault as we've used similar conventions, but this isn't a valid type (at least according to PyCharm). This document seems to be the closest I can find to a spec:

https://developers.google.com/closure/compiler/docs/js-for-compiler