Started refactoring Subscription into subclasses.

Includes major unit test reworking.

Will make it easier to set duration for provisional access
(https://www.pivotaltracker.com/story/show/71343948) but also to
manage provisional and pay-by-check accounts in a less hacky way in
general.

Partial to-do list:

* continue moving "provisional" functionality from
  AuthorizeNetSubscription into ProvisionalSubscription
* better support for pay-by-check (ManualSubscription)
* figure out whether to include billing info in
  ProvisionalSubscription
* ensure only one active subscription per organization
Cancel any existing subscriptions when creating a new one.
Don't let customer update a provisional subscription.

This is basically moot because we already don't let them access the edit
form. But, you know, just in case.
Removed moot references to provisional attribute.

Now that `ProvisionalSubscription` is its own class, the credit card
expiration validation no longer needs to exempt provisional accounts.
Also, no need to set the `provisional` attribute in BillingController,
which works exclusively with `AuthorizeNetSubscription`.
Don't log credit card numbers.

We shouldn't log at the debug level on production anyway, but just in
case.
Removed antiquated comment.
Added convenience method for payment variable lookup.
Dead code elimination.

We used to use this to skip the AIM transaction for some updates, but
now we don't do AIM transactions at all.
Fixed: Admins can't update provisional subscriptions.

Payment amounts (useful for manual subscriptions, which for now we're
treating as provisional) and next billing date weren't available on
`ProvisionalSubscription`.

Also fixed bug where billing info page always showed the recurring
amount. Now it shows the starting amount if you view it before the
subscription starts.
Default payment amounts for provisional subscriptions.

Provisional subscriptions shouldn't have payment amounts, but manual
subscriptions should, and for now, manual subscriptions are provisional.
(Basically, we're just trying to preserve existing behavior in this
refactoring.)
Fixed test bug.

When we added "a day has passed" to the time-passing step, we
accidentally broke "a day passes."
Don't base next billing date on actual payment date.

If a customer's card fails on their billing date, Authorize.Net may
retry the card on subsequent days. This doesn't change their annual
billing date, but when we based the next billing date on the actual
payment date, it did.

The drawback of this is, now if we're wrong about the next billing
date, receiving payment won't automatically correct it. We should
endeavor not to be wrong.
Renamed Payment History to Notes.

Soon we'll allow adding notes that aren't payments.

https://www.pivotaltracker.com/story/show/71343948
Feature: add a non-payment note.

We refactored the non-payment parts of Payment into a new
SubscriptionEvent model.

To do:

  * edit and delete notes
  * fix all the code that still assumes the old schema

https://www.pivotaltracker.com/story/show/71343948
Feature: Add payment info to existing note.

Also fixed bug where payment inputs weren't showing up in the first
place.

https://www.pivotaltracker.com/story/show/71343948
Feature: Delete a note.

This is mostly just a minor revamp of "delete payment."

https://www.pivotaltracker.com/story/show/71343948
Renamed PaymentsController to be about events.

https://www.pivotaltracker.com/story/show/71343948
Fixed bugs when creating notes with payment.

The `associate_subscription` callback didn't work in the nested
class, so we moved it to the outer `SubscriptionEvent` class.

https://www.pivotaltracker.com/story/show/71343948
Fixed form label bug when editing payment info.

https://www.pivotaltracker.com/story/show/71343948
Refactored how next billing date gets extended.

* Renamed method from `extend_subscription!`, because no
  `Subscription` object is involved.
* `Payment` doesn't call it directly on `Organization`, because
  it's not connected directly to `Organization`. Instead, it
  just asks its `SubscriptionEvent` to take care of it.