bump 'kitchen help' into new Usage section
Use the full path to `chef-solo` and `chef-client`

This fixes a bug where a cookbook (like rbenv, rvm, chruby) sets the default
system Ruby. Chruby and RBenv specifically use $PATH munging, making those
binaries unavailable on subsequent Test Kitchen runs.
Add configurable defaults for chef-solo & chef-client paths.

This commit adds 3 new tunables: 1 for all Chef provisioners, 1 for
`chef_solo`, and 1 for `chef_zero` and builds on @sethvargo's previous
commit.

**:chef_omnibus_root** which defaults to `"/opt/chef"` is the location in
which Kitchen will check when determining if a Chef Omnibus package is
installed. Modifying this attribute will allow users to use alternative
Omnibus packages and is most likely always reasonable with its default
value.

**:chef_solo_path** is used with the `chef_solo` provisioner, and is the
full path on the remote instance to the `chef-solo` binary, and by
default is calculated using the `:chef_omnibus_root` attribute as its
base. For example, if the Omnibus root is `"/opt/chef"`, then the
`:chef_solo_path` value will be calculated as
`"/opt/chef/bin/chef-solo"`. If the `chef-solo` command is located
elsewhere, this value can be set in a provisioner block to override the
default. For example, setting this attribute to `"chef-solo"` will
invoke the command without an absolute path and rely on `$PATH` lookup.

**:chef_client_path** is used with the `chef_zero` provisioner, and is
the full path on the remote instance to the `chef-client` binary, and
by default is calculated using the `:chef_omnibus_root` attribute as its
base. For example, if the Omnibus root is `"/opt/chef"`, then the
`:chef_client_path` value will be calculated as
`"/opt/chef/bin/chef-client"`. If the `chef-client` command is located
elsewhere, this value can be set in a provisioner block to override the
default. For example, setting this attribute to `"chef-client"` will
invoke the command without an absolute path an rely on `$PATH` lookup.

Here is a concrete example of overriding `:chef_solo_path` and
`chef_client_path` in a `.kitchen.yml` file:

    ---
    driver:
      name: vagrant

    platforms:
      - name: ubuntu-14.04-solo
        provisioner:
          name: chef_solo
          chef_solo_path: /mnt/alt/bin/chef-solo
      - name: ubuntu-14.04-client
        provisioner:
          name: chef_zero
          chef_client_path: /bin/chef-client

    suites:
      - name: default

**Warning:** previous logic used a non-absolute path to invoke both
`chef-solo` and `chef-zero` which means that this commit has the
potential to cause some Kitchen runs to fail, assuming that the Chef
being invoked before was not actually `/opt/chef/bin/chef-solo` or
`/opt/chef/bin/chef-client`. In this case, users can override the new
computed default with a value of `"chef-solo"` or `"chef-client"` to
exactly preserve previous behavior.
Merge pull request #381 from test-kitchen/sethvargo/full_chef_path

Use the full path to `chef-solo` and `chef-client`
Check for zero byte state files.

The read method did not handle zero byte files and would
attempt to read the file. This now will overwrite the values
should the file be empty.
Merge pull request #431

The read method did not handle zero byte files and would attempt to read
the file. This now will overwrite the values should the file be empty.

Closes #430
Closes #431
Die on `kitchen login` if instance is not created.

Thanks to @daniellockard for the work in #462.

Closes #375
Closes #462
Merge pull request #526 from test-kitchen/uncreated-instance-login

Die on `kitchen login` if instance is not created.
Merge pull request #477 from curiositycasualty/add-debug-to-readme

Bump 'kitchen help' into new Usage section and add how to use "-l".
Introduce the 'chef_installer_options' config parameter to be able to pass additional arguments to the Chef installer script.
Update chef_installer_options to chef_omnibus_install_options.

This is an attempt to keep the Chef Omnibus-related configuration easy
to parse and sort lexically.

References #489
Merge (rebased) pull request #489 from AutomateDev:chef-dk

Closes #489
Wrap long line in Guardfile (style).
Update RuboCop disable rule name in testing code (style).
Update Regexp literal syntax in Guardfile to prefer %r{...} (style).
Prefer `map(&:method)` form to simple blocks (style).

However, this may lead to slightly more dense and hard-to-parse code if
over used. Proceed with caution.
Prefer double-quoted strings in Gemfile & Guardfile (style).
Prefer hash rocket style in Gemfile (style).
Refactor & normalize Guardfile format.
Add source encoding comments to Gemfile & Guardfile.