Admins can add repos for Curry to watch.

Curry allows Chef Admins to keep track of GitHub repositories for which
Supermarket tracks CLA status.

Note: this currently does not subscribe to the GitHub repo's hubbub hub.
This is just to keep track of repos within Supermarket.
Manage GitHub repository hubbub hooks with Curry.

When an admin adds a repository, use GitHub's hooks API to receive
notifications related to that repo's Pull Request activity.

Likewise, when an admin removes a repository, unsubscribe from those
notifications.

Implementation details:

* Use the Octokit gem to interface with GitHub's API.
* Create Curry Factory, it uses a RequestBin URL for the callback_url
* Use VCR for recording and playing back HTTP requests in tests
* The Curry::RepositorySubscriber model handles the subscribe and
  unsubscribe functionality. To create a Curry::RepositorySubscriber, it
  must be initialized with a Curry::Repository.
* The callback_url is saved with the Curry::Repository record. It is
  required for both subscribing and unsubscribing to the GitHub event
  hooks.
Create an endpoint to handle GitHub's POSTs
Run a job after a Pull Request Update

Using Sidekiq!
Add Redis instructions to the README
Add spec outline for the CLA Validation Worker
ClaValidationWorker can handle newly-opened PRs.

Create PullRequestAnnotator class that handles finding the committers
of a PR, checking if they are have signed a CLA and interacting with GitHub
appropriately (comment if there are committers who have not signed a
CLA, a label if all committers have signed a CLA).

Implementation details:

* Only store name and action on PullRequestUpdate
* Create association between PullRequestUpdates and Repositories
* Adds static method to User that finds a user by their GitHub login

To note:

* The worker does not handle any different pull request event types.
* No specs were written for the code in this PR, there are pending specs
  of the outline of what this _should_ do.

To do:

* Write specs for the methods added in User
* Enforce that the Account model validates uniq on the username and
  provider
* Write specs for the ClaValidationWorker
* Write specs for the ClaAnnotator
* Comment ClaAnnotator methods
Begin commenting the Curry::PullRequestAnnator.
Document and test PR annotation
Reduce output noise when running tests
Do not validate CLAs when PRs are closed
Add note to annotation re: future guards
Use currybowl for Curry hub callbacks.

Use a currybowl URL in development and test instead of RequestB.in.
currybowl does not remove the created bowl after 48 hours like
RequestB.in does. This allows for the same end point to be used for
testing and development to verify that GitHub is posting updates to a
callback.

In production, Supermarket uses the Curry::PullRequestUpdates create
action as the end point.

This commit also takes care to filter sensitive data from cassettes.