Allow knife to install cookbooks with metadata.json

Previously `knife cookbook site install` would only install cookbooks that have
a metadata.rb. This has a number of problems, mainly that compiled metadata is
supported elsewhere in Chef.

This commit adds support for parsing the metadata.json, even though the
metadata.rb is still preferred (since that's what the rest of Chef does).
Use a real error class when metadata is not found
Clean up knife cookbook site install tests
Add unit tests for cookbook site install #preferred_metadata
Merge pull request #2642 from opscode/btm/site_install_json

knife cookbook site install json support w/tests