Permit `berks show` on transitive cookbooks

The behavior a user sees when attempting to "show" a cookbook is now
normalized. Formerly, a user could only call `berks show` on a cookbook that
was defined directly in the Berksfile (i.e. a direct dependency).
The `CLI#show` method now delegates to the lockfile, allowing a user to display
information about a transitive (indirect) dependency.

Additionally, the `Berksfile#retrieve_locked` method now delegates to
`Lockfile#retrieve`, and accepts either a `Dependency` object or a String
representing the name of the dependency to retrieve in the lockfile.

This commit also refactors the `DependencyNotFound` error to be more consistent
across the entire codebase (mostly just updated cucumber features). When a
dependency does not exist in the lockfile, a `DependencyNotFound` exception is
raised. When a dependency does exist in the lockfile, but a local copy of the
cookbook has not been downloaded, a `CookbookNotFound` error is raised. Prior
to this patch, we have tended to use the two interchangeably.