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.
@ppgengler if you look at the code:

```ruby
    def to_s
      if @version
        "Cookbook '#{@name}' (#{@version}) not found #{@location}!"
      else
        "Cookbook '#{@name}' not found #{@location}!"
      end
    end
```

The error will intelligently handle when a version is `nil`. So if you pass in a version, it will specifically say "Yo dawg, this version ain't found". If you give `nil` (or `false`) for the version, it will say that the cookbook is not found. The error is actually for both cases :smile:.

If you want to add additional information, we can subclass the exception:

```ruby
class LockedCookbookNotFound < CookbookNotFound
  def to_s
    super + "This can happen if the remote cookbook has been deleted..."
  end
end
```

Make sense?