testsuite: Be explicit about runtime test dependencies
Issue #8356 reports occasional errors from running the testsuite about
multiple package versions available. This stems from the invokation of
`runghc` not being explicit about all dependencies of the testsuite.
The solution is provide a component in the cabal file which is explicit
about which packages the tests can depend on. This component has a
build-depends section which lists all the dependencies that the tests
require.
It would be better if this component was a library component but we
can't do this with a Custom setup because of limitations to do with
per-component builds.
Then we also enable `-hide-all-packages`, so the dependency will not be
available if it is not explicitly listed as a dependency.
You could also imagine a future where the Setup.hs script found the test
files and compiled a single executable which would run all the tests,
rather than invoking runghc on each one individually.
Fixes #8356