Add support for cooking with environments

This patch does the following:

- Environments are synced to node
- Environment can be specified with -E option during prepare and gets stored in node config
- When cooking the environment is read from node config (optional override with -E) and written to solo.rb
- If Chef version doesn't support environments a warning is shown when cooking

I am not sure how to go about adding tests for any for this. Please also check the implementation of node_environment which reads the environment from the node config, not sure if this is the right way to do it.