Split cabal-install into library and executable components.

Makes it possible to write unit tests for code under Distribution.Client.*.