Improve error message when lockfile has missing cookbook or version.

This was found in #1221 which had a corrupted Berksfile.lock due to both metadata.rb and metadata.json present.  However, this could also happen if someone deleted a cookbook from a server, or if someone changed the sources in Berksfile and tried to do an install.  The previous behavior was the ugly exception trace in #1221; now it generates a message explaining that either the cookbook is missing or the version and offers advice on how to fix.
They do seem similar and I considered that one at first.  The thing that steered me away is for our main use case there was a version on chef that was deleted for some reason (in our case to avoid complex, unsolvable dependency trees causing chef server's resolver to hang); the solution to that for us would generally be to run `berks update` so that it pulls a different version, but one that still matched the constraints (and if that didn't work, think about and adjust constraints).

The `CookbookNotFound` exception seemed to more imply that the cookbook wasn't present at all, vs. the version one wanted not being there, but perhaps I'm mis-reading what that error means?  The other downside is that it doesn't have any instructions to help the user find a resolution; it'd be nice to both let them know the cookbook version they want is missing, as well as say 'run `berks update` to fix'.