Fixes CHEF-3307

Use metadata name when loading cookbook

If a name attribute is loaded from a cookbooks metadata, use this for
dependency checks and references as specified in documentation. Ensure real
pathname is retained so that manifests can still be generated correctly.

In addition we must read the metadata implicitly when cookbooks are loaded to
ensure we are using the correct name.

Also include a deprecation warning when encountering missing names in metadata
as this is a planned breaking change in Chef 12.
Tests CHEF-3307

Test cookbook loading, shadowing and metadata deprecation warnings assocaited
with the CHEF-3307 changes (use of metadata name as cookbook name in preference
to file system pathname).

Includes new nginx cookbook (with alternate pathname) and a shadowbook with
another pathname.
Improve deprecation warning
Lazy load metadata
Lazy load cookbooks
Merge branch 'CHEF-3307'