refactoring of chef logic into separate module and some improvements

The chef_client module now contains all the functions for installing,
configuring and running chef. The tasks module now only needs to import
the `set_up_chef_client` decorator and the `run_chef` function.

I also added catching of stdout and stderr in the `sudo` function, and
improved the exception text.
just the changes I used for testing - don't merge this