[CHEF-3919] Added support for setting ">", "<", "<=" ... versions in Chef::Platform
[CHEF-3919] Chef::Platform test added for "greater than" comparators
[CHEF-3919] Some broken test fixed
[CHEF-3919] platform_spec s/comparator/operator/
[CHEF-3919] rescue from an InvalidCookbookVersion exception inside Chef::Platform when platform version cannot be parsed properly
[CHEF-3919] existing platform version conditionals updated to use "greater than"
[CHEF-3919] platform parsing error message outputs the problematic version for debugging
[CHEF-3919] cookbook version specific code factored out from Chef::Version, new classes created: Chef::Version::Cookbook and Chef::VersionConstraint::Cookbook
[CHEF-3919] tests added for Chef::Version::Cookbook class
[CHEF-3919] tests added for Chef::VersionConstraint::Cookbook class
[CHEF-3919] Removed Chef::Version::Cookbook code and replaced by a Chef::Version::Platform class, reverting Chef::Version class changes
[CHEF-3919] "~> 1" pessimistic version constraint parsing fixed in VersionConstraint class.
[CHEF-3932] Support multiple calls of `Knife.deps`

If a Knife subcommand class were inheriting or including other classes
with lazy loading dependencies, a later call to `Knife.deps` overwrote
the earlier block. Fix it by collecting the blocks to an array.
[CHEF-3932] Add unit tests for Knife's lazy dependency loading
CHEF-4010 Ensure lock release for all operations
CHEF-4010: Test to ensure we release the run_lock if we fail in #load_node
Fix expected strings
[CHEF-3772] Use the sync(-s) option to get exit status.

*  svcadm to wait and return errors back to the provider
*  switch method from run_command to shellout!
Handle pid file appropriately in forked process

Code and tests to keep a daemonized chef-client's forked process from
reaping the parent pid file.

Without this fix a forked process will reap its parent's pid file,
breaking init script functionality.  A start call to the init script
will then launch a new process, since the init script is ignorant of the
already running process.

A process is considered a fork in case the chef-client daemon is
running and the process pid is not equal to the pid defined in the
pidfile, or if the chef-client daemon is not running and the parent pid
of the process is 1, implying that the process was a fork at some point
and has become orphaned.
Merge branch 'CHEF-3367'