provisioners/chef: Support solo machine node recipes

The ability to override the node_name and read from a machine recipe
is very useful when testing locally. We can ensure that some of our
Chef Server recipes will work appropriately without having completely
separate blocks in Chef Solo.
Hack for local mode support in Chef Solo.

This is to get around some issues with the Chef Solo provision
limitations. It uses the chef-client in "local mode" which loads up
a REST Chef-Zero API server on the guest machine. This is then used
to make the appropriate calls necessary to provision nodes, environments,
etc.