Make diff work with extra/missing directories again (fix for unit test)
Test to ensure json is output in sane order
Make diff formatting better now that output is prettier
Print error for bad json in knife upload
Fix #82: Allow knife upload of files with no name/id in them
Ignore . dirs in data bags and cookbooks
Report failed network reads in knife diff
Print out URL when we fail to retrieve
[CLI] Added --chef_repo_path option

This will override the chef_repo_paths option in the config. When
specified, the directory is assumed to contain the entire chef repo
you want.

This option is put in place so that testing migrations using
`knife download` and `knife upload` is easier. If "override everything" is
a feature request you require, then please file a bug report
[COOKBOOKS] Added versioned_cookbooks support.

 - Adding "versioned_cookbooks true" to knife.rb turns on versioned cookbook mode
 - Cookbooks are assumed to be named such as:

cookbooks/
  apt-1.8.4
  apt-1.7.0
  postgresql-2.2.2

 - This allows for multiple versions.
 - Caveat: this commit requires the CHEF-3307 patch against chef 10-stable
[COOKBOOKS] Fixed regressions when versioned_cookbooks is false
[SPEC] Refactored some of cookbook_dir_spec
[SPEC] Separated cookbooks_dir and cookbook_dir spec. Added versioned_cookbooks test
[SPEC] Added more versioned cookbooks tests
[SPEC] Added versioned cookbook helpers, added some upload specs
[SPEC] Reorganized download, upload, and diff integration specs

 - Added one_of_each_resource_in_chef_server macro
 - Added one_of_each_resource_in_repository macro
 - Reorganized specs so that adding in versioned cookbooks specs will be easier
[SPEC] Added upload and download specs with cookbook versions

 - Specs assume that Chef requires name attribute in the metadata
[SPEC] Added name attribute to deps spec
[SPEC] Added versioned cookbooks spec for diff
[COOKBOOKS] Added symlinked proxy hack

 - Rather than backporting CHEF-3307, we add a hack here to make versioned cookbook work
 - When cookbooks_dir attempts to upload a versioned cookbook, it will:
   (1) Create a temporary directory
   (2) Symlink a canonical cookbook name to the versioned cookbook. ( /tmp/x -> /path/cookbooks/x-1.0.0 )
   (3) Upload the proxy
   (4) Remove the temporary directory

This makes the versioned cookbook compatible with Chef 11-stable and 10-stable.