Cookbook deprecation code enhancements

:fork_and_knife: 

Making some enhancements to the various levels of cookbook deprecation (code + UX levels).

- refactors the `Cookbook#deprecate` method to use scopes and be more SQL-y (benchmarks w/ @bcobb show that it is a little bit faster but not a whole lot faster, decided to stick w/ it because it is more "rails-y")
-  enforce not replacing a cookbook w/ a deprecated one
- display errors at the controller level when deprecating a cookbook

Trello card: https://trello.com/c/mDFbDEhs
A stronger assertion here would be that the replacement is `nil`.