Making the shell more strict, common library for bin files

Now every executable on Workshop runs under set -euf, which is
strict about failed commands and undeclared variables.

A library/common.sh was added so future options can be placed
in a single file.

Each executable now uses the same variable for its library
path ($lib_path) instead of each one having a different one. This
variable should not be relied upon though.
Coding style and cleanup. Minor output changes.

Most of the code is now under 78 columns of text, formatted
to be read using 8-space hard tabs.

Hard tabs are required for shell indented heredocs, so in our
case isn't much of a choice. The 8-space is the most popular
configuration (also the one GitHub has chosen), but this
might change in the future.

The trix tool now redirects everything the setup and clean
phases of a text matrix does to the sterr.
Moving provisioning from Vagrantfile to the test matrix

Previously, each vagrant machine had its own provisioning
inline command, which required constant maintenance of the
Vagrantfile.

A set of provision_* functions were added to the
test/matrix.sh file to handle provisioning for brew, yum and apt.
These are not libraries, they're just part of our testing process.

A matrix_remote was added to our test/matrix.sh to speed up
testing on multiple machines.

Our .travis.yml was re-generated after those changes.