IndexCache: use key variables instead of inline strings

Avoid inline strings and manual spacing - use already-declared key variables
and unwords
More descriptive errors when .cabal file is missing

Particularly when dealing with add-source dependencies, it is useful to know
in which directory cabal can't find a .cabal file, see:
https://github.com/haskell/cabal/issues/1816

Errors are also improved when installing local packages, e.g. `cabal install
another/directory`.
Merge pull request #1824 from owst/master

Fix #1816 - give more descriptive errors when .cabal file cannot be found