Refactor to use an intermediate sexp representation

This builds on https://github.com/travis-ci/travis-build/pull/275, so ignore all commits listed below, except the ones starting at 1df4645 "refactor to use an intermediate sexp representation".

This separates things clearly into these layers:

* `Travis::Shell::Generator::Bash` generates Bash code out of an intermediate sexp tree
* `Travis::Shell::Ast` contains AST node classes that spit out the sexp tree
* `Travis::Shell::Builder` defines a DSL to build up the AST tree
* `Travis::Build::Script::Ruby` defines the build script using the DSL defined by the builder

Lots of previous inconsistencies regarding the AST building DSL were removed. E.g. there's no `self.if ... do |sh| sh,cmd end` any more. Instead we now always use `sh.[method]` in `Travis::Build::Script.*`, e.g. https://github.com/travis-ci/travis-build/blob/1df4645f4a43c446a05a250433d00ed810f9415f/lib/travis/build/script/langs/android.rb#L20-L32

I have also already moved some Bash specific code to the DSL and Bash generator, e.g. `echo foo > ./path/to/file`. E.g. https://github.com/travis-ci/travis-build/blob/sf-sexp/lib/travis/shell/builder.rb#L63-L89 From here on it would be easy to extract more such commands for Windows support, and add a Powershell generator.

Left to do:

* [x] Bring back storing examples
* [x] Addons to be ported, also their specs. Some of this code could also use a little clean up, too :)
* [x] Port the coverity_scan addon, which has no tests, and overwrites `script`
* [ ] Talk to the coverity scan devs, confirm the current version works, add specs
* [x] Add specs for `Addon::Deploy::Conditions`
* [x] Add specs for `Addon::Deploy::Config`
* [x] Deprecate option specific branch hashes for deploy config, introduce branch specific option hashes.
* [x] Port the directory_cache specs
* [ ] General code review
* [ ] Careful review of the stored examples, e.g. are there any `echo`s that might leak sensitive data?