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.
ruby-shadow supports darwin+freebsd now

- comment in https://tickets.opscode.com/browse/CHEF-4402
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
CHEF-5001: tests for multiple rollbacks
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
Added unit test for ApiClient.load()

This is failing as it doesn't properly load all fields from the JSON
response
Delegate ApiClient.load to ApiClient.json_create

This means the validator/public_key/admin fields of the ApiClient
object now get set properly
Add --validator option to create validator client via knife

Also update tests to check the defaults for admin/validator
Add a --force option to protect against accidental deletion of validators

It's hard to recover an org from having a deleted validator client -
this patch protects against deleting validator accidentally e.g. in a
for loop around knife client delete by requiring you to specify --force

Includes specs around this new functionality