Increase the robustness of the chef module

Add the following adjustments to the chef template and module

- Make it so that the chef directories can be provided (defaults
  to the existing directories)
- Make the params much more configurable, and if a parameter is
  provided in the chef configuration it will override existing template
  parameters.
- Make the template skip lines if the values are None in the configuration
  so that template lines can be removed if/when this is desirable.
- Allow the firstboot json path to be configurable (defaults to the
  existing location).
- Adds a basic set of tests to ensure that good things are happening.
Undo changes to the util file, not sure why that happened...
Fix newline added at end of file
Add a few template delete tests
Move the installation code to its own function
Some more reworkings

- Make a helper function to tell if already installed.
- Have the install routine not run chef after installed
  but have it instead return a result to tell the caller
  to run the chef program once completed.
More adjustments

- Use the generated_by() utility function to
  give the ruby template a better header comment
- Set special parameters after selecting the basic
  chef parameters.
Allow for the running after install and run arguments to be configured

Instead of only running the client when installed from gems, allow it
to be ran from other install modes as well (if configured) and allow the
arguments that are passed to the client when ran to be altered (if so
desired).
Allow the omnibus url fetching retries to be configurable
Use the util function to get the chef base directories
Always ensure we create the /etc/chef dir
Move the chef running to its own helper function
Ensure that any template paths have associated directories

When the template provides a path, make sure that before the
template is written that the path that is now in the template
has the associated directory created (if not already created).
Have the caller find the param paths instead of the param creator
Follow the same constant variable naming scheme for the path tpl keys
Allow running even if installed

Standardize on using the chef_cfg key 'exec' which can be used
when installing to tell the caller to run the chef client or can
also be used if the client is already installed and its requested
to be ran.

To retain existing behavior 'exec' does not by default assume to
be true, unless explicitly provided or a gems mode install is
requested.
Add a comment explaining the param path logic
Retain the old behavior for mandatory keys

The keys 'server_url' and 'validation_name' were
previously mandatory, we should retain that behavior
for now.
Add a post-run method that can be used to delete validation.pem files

For those who run chef in non-daemon mode, they would like to delete
the validation.pem file if chef finishes as expected to remove that file
from existing in an easy to read manner.
Use the key contants in the default key => value set