Add solver failure reporting to cabal-install

This patch adds build reporting for dependency solver failures. It is motivated by Hackage, where such failures would leave no indication of what went wrong.

To simplify implementation, only targets with an exact name and version are reported. This includes e.g. `hello-1.0`, but not `hello > 1.0` or `hello`. This is good enough for Hackage, as we specify packages exactly anyway.

The feature is guarded behind a flag (`--report-planning-failure`), as most users don't need it.