Bump hspec dependency, should fix #236

`hspec-discover --no-main` was introduced in 1.8.2
Merge pull request #238 from DanielG/dev-hspec

Bump hspec dependency, should fix #236
Generate ghc package.cache before running spec
Correct check-packageid/cabal.sandbox.config.in
Add some test data

..for testing behaviour with multiple versions/ids of packges being
available
Add package.cache to .gitignore and make .cabal-sandbox absolute
Add cabal file to `duplicate-pkgver` test data

It's not really valid but enough to make ghc-mod happy, without it
findCradle doesn't work properly and without the empty `library`
sections it crashes even.
Add test data to Extra-Source-Files
Add `fromInstalledPackageId`
Factor out `readProcess'`
Add `withDirectory_` to Utils
Parse cabal `setup-config` to get depencencies
Fix failing test
Add UtilsSpec
Add `cabal` to PATH in travis script
Remove test/*/setup-config before spec
Cabal needs empty 00-index.cache and 00-index.tar in sanxbox
Add `fromInstalledPackageId`
ghc-mod deserves it's own monad

Having to call `findCradle` and `initializeFlagsWithCradle` everywhere
we interact with ghc-mod's API doesn't seem very Haskell-like to me I
think we should provide a Monad that has a run function that already
does all those tedious tasks for us.

The `GhcMod` monad is basically a wrapper around `RWST r w s IO` with an
instance for `GhcMonad`

Having a `Reader` allows us to pass `Options` to runGhcMod and not have
to worry about passing it everywhere, `Cradle` is also stored in the
reader environment on initialization.

Writer and State are just there for future use.

I've included a `toGhcMod` function that turns a `Ghc a` into a `GhcMod
a` this will make it easy to transition everyting to using the `GhcMod`
monad instead of `Ghc` without breaking the build or test suite for
extended periods of time.
Expose `Language.Haskell.GhcMod.Monad`