CHEF-4890: Allow gem upgrades

This was preventing chef from finding the candidate version when
upgrading a gem and assuming there was nothing to do
Add option --prevew-archive to `knife cookbook site share`
updates by comment. #1724

- Fix Typo prevew_archive to preview_archive.
- Change message priority from warn to info.
- Add few specs.
Merge remote-tracking branch 'upstream/master' into prevew_archive_before_site_share
change option name --preview-archive to --[no-]upload
Merge remote-tracking branch 'upstream/master' into prevew_archive_before_site_share
Fix a bug when receiving a relative redirect location

Currently when you use a provider that somewhere along the line uses
Chef::HTTP.request or Chef::HTTP.streaming_request, you will receive an
error when the response is a redirect with a relative location.
Have freebsd port use pkg info if the freebsd version is >= 10000017
Add supermarket_attributes to Metadata

Allow the metadata.rb in a cookbook to specify arbitrary attributes for
use from Supermarket. The usecase for this right now would be setting the issues
and source URLs for that Cookbook instead of specifying them in the
Supermarket UI.
Fix typo in Metadata documentation.
Use individual URL attributes in metadata

Instead of having an arbitrary Hash/Mash of supermarket_attributes, use two
explicit URL attributes at the top level of the metadata: the source_url and
issues_url.
Ensure metadata responds to method before sending, use public_send
Should use client_name instead of node_name
Remove unnecessary version check in freebsd port and package tests.
Move supports_with_pkgng? check to the freebsd_package package.
honor package category for paludis packages

the package/paludis provider ignored the package category during
load_current_resource(). Because of this, it was not possible to install
multiple package with same name in different categories

Example:
  * package[app-vim/screen] action install
     app-misc/screen 4.0.3-r6
  * gentoo
    app-misc/screen 4.0.3-r6 installed
      (up to date)
removed additional newline
fixed unit tests for be01da9
Update apply.rb

File.exist? throws an exception if file_name is nil instead of "". 

Use .to_s to normalise file_name to a string rather than have an explicit nil check.
Fixing case of a nil recipe file with chef apply

Raising the error 'No recipe file was provided' with a fatal!
call when the recipe_name is nil. This case occurs when
chef-apply is called without a recipe name argument.

Also renamed the apply spec file to apply_spec so it is picked
up by an rspec test run. Fixed a typo in the file where it was
creating a 'Chef::Application::Recipe' for @app instead of
'Chef::Application::Apply'