Clarify the point of Berksfile#contingent
Raise an exception when finding contingent cookbooks
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.
Fix failing spec
Add features for what the list feature should look like

This commit adds the cucumber features for what the user experience
should be like with the edge cases for `berks list`.
Add lockfile validations and synchronization checks
Support --only and --except for `berks list`
Add a presence checker for the lockfile

The presence checker determines if the lockfile exists on disk. A 
lockfile will always exist in memory, but we need a way to make sure
one exists on disk.
Define custom lockfile errors
Add features for what the outdated feature should look like

This commit adds the cucumber features for what the user experience
should be like with the edge cases for `berks outdated`.
Perform lockfile validations on outdated
Remove accidential @focus tag
Update apply feature to use the new error message