New program module specifically for donations

Jordan and Ben had discussed offering a page for selecting donations, separate from both the extra costs module and from the Stripe payment module.  Joel has kindly broken the code out from the Stripe module and I just made some tweaks this evening.  Please review.
Needs more fields. In particular, the missing program field is causing tests to fail.