add uniqueness constraint to provider and username
adding a meta tag to prevent crawling
Simplify OmniAuth auth stubbing

There is now a single file that is responsible for defining and enabling
OmniAuth stubs. Furthermore, authentication in feature specs is more
explicit with regard to which user is signed in, and configures OmniAuth
so that the about-to-be-signed-in user can sign in via Chef and can link
her GitHub account

Conflicts:
	spec/spec_helper.rb
Merge pull request #329 from opscode/unique-account-provider

Make the provider/username combo unique
Remove index on User email
Authenticate users by their Chef username
Remove the now-unused User.with_email scope
Update Chef Account information on authentication
Merge pull request #330 from opscode/no-crawling-plz

Adding a meta tag to prevent crawling
Merge pull request #331 from opscode/non-unique-email-addresses

Email addresses need not be unique.
Add a field to track a cookbook's replacement
Track deprecated cookbook replacements
Merge pull request #334 from opscode/track-replacements

Track deprecated cookbook replacements
Authorize cookbook uploads and associate owners

This ensures that the authenticated user is authorized to upload new
versions of a cookbook. If it's the first time the cookbook is being
uploaded the authenticated user is associated with the cookbook as the
owner.
Error messages must be an array.

Knife currently expects any returned error messages to be within an
array. So while most of these cases there is only one error message we
must return it within an array to maintain backwards compatability with
knife.
Use separate errors for cookbook create/destroy authorization

Knife expects any unauthorized destroy action to return a empty body and
a 403 response whereas cookbook create expects a body with an error code
and error messages and a 400 response. This accounts for the differences
between how each action should respond when authorization fails.