Improve cabal install tests

This MR improves the cabal-install tests in three ways.

 - Fix some hysterises problems with the cabal-install tests requiring a sandbox to have already been created
 - Use the `dist/build/cabal/cabal` executable (if one exists) to run the tests
 - Enable the tests on Travis.

There are some issues with using the `dist/build/cabal/cabal` executable which are detailed in the commit message. Briefly they are 1) cabal could have been configured with `--builddir=some/where/else`; 2) the user might being `cabal install`ing into a sandbox rather than the prefered `cabal build`ing.

Both of these can be solved by 1) making sure that `dist/build/cabal/cabal` does not exist and 2) that the desired cabal executable is first on the `PATH`. Whilst not ideal, this removes what I consider to be the most likely source of unexpected behaviour with running the tests, namely running `cabal build` to build cabal (with the default build dir) but not having `dist/build/cabal` added to the PATH.

If anyone has any ideas on how to support all configurations and build methods in a better way, I'd be interested to hear them.

Refs #2075.

This function isn't doing the work that the test is intended to test. I have the asserts in it so that if the commands should fail I get an error about them failing rather than an error about `cabal exec ...` producing the wrong output. I can change the function to `assertPackageInstall`. I think that's clear.