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
Add New Relic

This allows users to optionally configure a license key and app name for
New Relic for performance monitoring.
Move Cookbook maintainer, description to CookbookVersion

Since maintainer and description can be changed overtime with new
versions there is no need to store these attributes on Cookbook. This
moves both of these attributes from Cookbook to CookbookVersion but
delegates Cookbook#maintainer and Cookbook#description to
Cookbook#latest_cookbook_version for easy access.
Merge pull request #336 from opscode/new-relic

Add New Relic
Merge pull request #337 from opscode/move-cookbook-attrs-to-cookbook-version

Move Cookbook maintainer, description to CookbookVersion
Don't send cookbook notifications to imported users

Since we'll be running Supermarket in parallel with the current
community site we don't want to send cookbook follower notifications
from Supermarket until the user signs in, at least during the soft launch
period. Imported users will have a oauth_token for their chef_oauth2
account set to imported until they sign in so we can use that as an
indicator for whether or not they are active on Supermarket.
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.