Allow using cabal program itself as the external setup method
This fixes issues when the version of Cabal that cabal-install was built against differs from the one registered in the local package DB. Normally we compile an external setup against the local Cabal library, which could lead to failures or inconsistent results compared to using the internal method. This fixes #2438 and fixes #1938.
Showing with 108 additions and 8 deletions