CHEF-4443 - Always save the correct run list

As per Dan's suggestions, use a primary run_list and an override, and
take care to ensure that the correct one is used to save the node.
CHEF-4643 Add cookbook versions to chef-client INFO and DEBUG logs
Handle sections without text parameters

 * Allows interop with gems that throw custom exceptions without string messages.
obvious fix
fix mistype in converge for deploy#copy_cached_repo
CHEF-4927 - coerce group GID to string

To remain consistent with the way the user provider works, coerce both
new_resource and current_resource GIDs to strings for comparison. This
allows users to write their resources like:

group "zone" do
  gid 233
end

or

group "zone" do
  gid "233"
end

Without this change, every time Chef runs when a string GID is
specified, it will modify the group, which is not desirable.
[CHEF-4799] Handle non-dupable elements when duping attribute arrays
[CHEF-4946] Don't try to install ruby-shadow on cygwin
Update to allow boolean and numeric attributes
fix for checking choice array correctly.
update tests and add new tests for limiting attribute types
Create a method to get IO for live stream.
in Chef::Mixin::ShellOut
default to IPS packages on Solaris 5.11+

This behavior was correct until 7fa1ea5 flipped the logic.
add tests for solaris package providers
CHEF-4990
CHEF-4962, knife ssh will use a cloud atttribute for port if available.

The Azure cloud can have multiple nodes behind a single ip/fqdn
with different ssh ports for each. knife ssh should be able to
run on a search of nodes and use the correct ssh port for each.
Change ssh port attribute to use cloud, reorder priority.
Refactor node search for knife ssh.
ensure Chef::REST does not modify options in-place
add run_list setter