Compile a build.sh script

This changes travis-build to compile a shell script from the directives given in the various language builders. The goal is to get rid of the need of a persistent ssh session. Instead we'll just pass a single build script and tail stdout.

This approach should help getting rid of occasionally hanging builds that are stuck in race conditions somewhere in the implementation of Net::SSH::Shell.

Since we're doing a fair amount of logic in travis-build (such as checking for exit codes, conditions on file existence etc.) all this now has to happen within the shell script now. To make this work I've added a rather simplistic dsl to describe shell scripts the way we need. Thus a full rewrite was necessary and bugs might have snuck in.

The test suite stores example build.sh scripts for each language and a few variations where applicable here: https://github.com/travis-ci/travis-build/tree/sf-compile-sh/examples

We'd like to ask everyone involved with the implementation of language specific builders to review these scripts and compare them to the previous builder implementation (https://github.com/travis-ci/travis-build/tree/master/lib/travis/build/job/test) in case we've missed something or got something wrong.

These scripts already run on some of the VMs on travis-ci.org (the rails and spree queues) and we are ready to switch more queues. But we'd like to get a good review from the community before we turn this on for everyone in production.

Thanks :)