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)
just fyi you may be able to use locator.CourseLocator() instead of SlashSeparatedCourseKey (which I think is deprecated)