Re-factor StyleGuide for ease of type addition

This change makes it easier to understand `StyleGuide::Base` inheritance. The
template method pattern makes it easy to scale style guides to scale
horizontally: just add the new language style guide and inherit off of `Base`.

Changes:
* add `Violations` object to manage unique violations
* refer to modified lines as changed to make it easier to reason about
* introduce `UnchangedLine` class
Allow subscription to be created and deleted without refreshing page

https://trello.com/c/l2vLI2yj/353-address-repos-with-subscriptions-that-weren-t-enabled
Allow non-paying users to unsubscribe

https://trello.com/c/SrdebCDE/345-ensure-that-only-repo-payer-can-disable-it