Add vagrant setup for testing on multiple distros
Move comment off of shebang in usage example

When the comment is in the shebang line it causes issues in some distributions,
for example ubuntu.  It is reasonable to not put comments in the shebang.
Recommend assert_status instead of set -e for multiple asserts

Turns out `set -e` is unreliable across distributions/shells.  It might be
because the specification is pretty complex around the situations where -e will
cause an exit...  looks like simple commands but maybe not pipelines.
Use full paths when using shared examples

Something on OSX was letting me get away with not using full paths, but it is
plausible that they always should be.  At any rate this makes the examples work
on distros like centos, opensuse, fedora.
Add note about shared examples and DASH
Add multi-shell test harness to run on each distro

More eventually should be done with this but the basic operation of changing
/bin/sh, running the tests, and making it so the test results can be parsed is
there.  Adds shell installation instructions to provision process.
Remove unnecessary rake tasks to switch shells

The test/shells script has a better technique of doing this anyhow.  The cp
wasn't working on unix distros.
Only run shell tests if sh.bak exists

The case where it does not happens if you get a password prompt and you fail to
provide the password.
Return from assert_output instead of exit

The reason is that assert_output is intended to be used in pipelines but the
behavior of exit from within a pipeline is shell-specific.  Some shells like
bash/dash treat it as a return status while other shells like ksh/zsh will in
fact exit a script entirely.  AFAIK there is no one right way dictated by POSIX
for this issue.

Given that you can't get consensus behavior for the exit, it seems appropriate
to return.  Nothing changes in the common case where assert_output is the last
command in the last pipeline of the script.  Additionally it gives
assert_status a concrete reason to exist -- you use assert_output and then
follow with an assert_status to make a multipart test script (or more likely
you just use assert_status following some other check like test or grep).
Meanwhile assert_status does not have the same exit conflict as assert_output;
it simply does not make sense to use it within a pipeline.
Merge branch 'vm'
Bump the version to 2.0.0-beta

Ok kinda silly because no 1.0 was ever released but the assert_output change is
potentially breaking so bump.
Merge branch 'return_from_assert_output'