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 documentation style looks a little off (at least for the standard JS doc). It should look like this:

            /**
             * Updates the collapse/expand state for this outline element, and then calls refresh.
             * @param isCollapsed true if the element should be collapsed, else false
             */

http://usejsdoc.org/about-getting-started.html

PyCharm populates a template for these, but that obviously doesn't help if you are using Sublime or some other editor.