Rewrite Chef execution module

1) Change cmd.run to cmd.run_all so the behavior matches
   the documentation
2) Turn colored output off
3) Remove support for postitional arguments, because they didn't
   work anyway
4) Direct log output to a file for cleaner return data
5) Wrap the calls to chef-client and chef-solo in a script command.
   Without this, the only output captured is the log (which is
   what we want to suppress). This technique gives you the information
   about which resources were updated and a summary of the run.
6) Document accepted arguments
New Chef state module
Clean up lint errors
Merge pull request #17279 from skweezbox/chef

Updates to chef execution module and new chef state module