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
obvious fix
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
Merge remote-tracking branch 'origin/master' into save-right-run-list

Conflicts:
	lib/chef/client.rb
move run_list twiddling into the policy builder
Upgrade Chef Zero & remove Puma

This commit upgrades Chef Zero to version 2.0.0, which removed Puma entirely.
Chef no longer requires Puma at runtime, so it can be moved into the
development gem group. Chef Zero 2.0 runs entirely in WEBrick and also uses
less memory and a more direct threading approach.
Changelog for chef-zero upgrade
Merge branch 'CHEF-4901'