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.
Use VCR in the PR Annotator specs
DRY up VCR usage in Curry model specs
Curate list of pending validation worker specs
Signing an ICLA triggers a background job to reevaluate that user's PRs
Redesign annotation to work with Pull Requests

We now have Pull Requests, which have many Pull Request Updates, and
which belong to Repositories. Instead of working directly with the
Updates, our annotation model works with Pull Requests. This will allow
us to reuse the annotation model when a User with pending Pull Requests
signs a CLA.
Import unknown Pull Request committers as records.

Create a Curry::ImportUnknownPullRequestCommittersWorker that
initializes a Curry::ImportUnknownPullRequest object that imports
committers that have not signed a CLA or do not have a GitHub login
associated with their commits.

A Curry::UnknownCommitter is a committer in a Pull Request with a GitHub
login who has not signed a CLA in Supermarket or does not have a GitHub
login associated with it.

Create the Curry::UnknownCommitter and Curry::PullRequest models. Create
Curry::UnknownPullRequestCommitter model to join the
Curry::UnknownCommitter and Curry::PullRequest models.

This also updates the Curry::PullRequestAnnotator to initialize with
a Curry::PullRequest instead of a Curry::PullRequestAnnotator.

Note: new classes and methods need to be documented.
Remove Pull Request re-evaluation logic for now

This will make it back in as part of a future story.