Further refactoring.

Most significantly, I've added a civicrm_post hook for SubscriptionHistory
which allows us to get rid of the civicrm_mailchimp_history table. We'll need
to get that hook added to CiviCRM core, but I think that'll be pretty easy as
it seems to me that it would be a useful post hook for more than just this
purpose.  In addition, I've created a couple of classes for better code
organization.