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 "install chef" code is Bourne shell compatible
ensure all Busser shell code is Bourne shell compatible
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 BUSSER_ROOT and Busser's Ruby binpath configurable

This is important in test instances where `/opt` is read-only or Chef is
installed in a non-traditional location.
ensure Busser executes out of a sandbox

This change ensures Busser does not pollute the main Omnibus Chef install
with gems that are only leveraged for 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 busser and busser plugin gems in a sandbox. This sandbox
location can be changed via the `driver_config/busser_root` config option.
* Ensure all remotely executed commands are sandbox aware. This is
accomplished by ensuring GEM_HOME and GEM_PATH are set 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)!