add some re-usable shell helpers to `Kitchen::Util`

These were inspired by an updated version of Chef's install.sh which is
now Bourne shell compatible.
ensure all remote shell code is Bourne shell compliant
ensure busser respects `sudo` driver config setting

If you have disabled `sudo` use at the driver level this probably means
the test execution framework (i.e. busser) should comply. This is
especially important in UNIX flavors that don't even include the `sudo` utility!
Make the remote Ruby binpath configurable

This is important for cases where Ruby is installed in a non-default
location, either because it was not installed via Omnibus Chef OR a
non-Chef provisioner was used.
ensure Busser and Chef-Zero execute out of sandboxes

This change ensures the main Omnibus Chef install is not polluted
with gems that are only leveraged for provisioning or test execution.
There are also situations where we cannot install gems into the
Omnibus Chef install location as it may be read-only (see Chef for
Junos).

This commit includes the following enhancements:

* Install all gems into sandboxes.
* Ensure all remotely executed commands are sandbox aware. This is
accomplished by setting GEM_HOME and GEM_PATH for all remote commands.
make remote PATH configurable

Since test kitchen picks up the location of all provisioners from PATH
it is important we make this value fully configurable!
add a "proxy" driver

Simple driver that proxies commands through to a test instance whose
lifecycle is not managed by Test Kitchen. This driver is useful for long-
lived non-ephemeral test instances that are simply "reset" between test
runs. Think executing test-kitchen against devices like network switches
(this is why the driver was created)!
Make Ruby binpath part of the remote PATH if it's configured