Fix CHEF-3307 & CHEF-3490

[CHEF-3307](http://tickets.opscode.com/browse/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.

[CHEF-3490](http://tickets.opscode.com/browse/CHEF-3490): Name attribute in metadata should be required

Add a raise to bail out with an error if a cookbook is loaded that fails this new requirement.