Make html doc links relative (for Windows)

These changes have only been implemented and tested on the
Windows build, so relative html links are only generated in
that build.  No-op implementations of OS-hooks are provided
for the other builds, such that at least the behavior for
other builds should remain the same as before.

For the Windows installation of the HP, these changes get the
cross-package html urls to work properly, as well as getting
the master index urls set properly.  These changes augment
the generic changes, as the Windows installation requires
relative paths for all the URLs in the html
documentation.

It should be possible to use these new OS-hooks to munge
the URLs for non-Windows installs as well (with some work to
determine what the hooks need to do on each platform, given
installation locations, etc.).

* hptool/src/HaddockMaster.hs
  * Add the base directory to haddockAllCoreReadArgs and
    haddockAllPlatformReadArgs, as the munging of paths to
    make them relative (to the base dir) must happen before
    the list is collapsed by readArgs
  * Add calls to the url munging OS-hooks in the ghcInfo and
    hpInfo functions.
  * Add the osGhcPkgHtmlFieldExtras OS-hook, which is used on
    Windows to specify to ghc-pkg to not expand ${pkgroot} or
    $topdir.
* hptool/src/OS.hs
  * Re-export PkgInstallDirs from OS.Internal
* hptool/src/OS/Internal.hs
  * Add a record, PkgInstallDirs, to capture all the
    directory paths needed for the invocation of "cabal
    configure".  This is crucial for the Windows platform, so
    that pieces (doc, lib, bin) all go to the right places
    during the "cabal copy" step.
  * Add two OS-hooks to optionally munge the html
    path which comes back from the package conf info
  * Add an OS-hook, osGhcPkgHtmlFieldExtras, to
    optionally add switches to the ghc-pkg invocation when
    querying the haddock-html field
  * Remove the osToCabalPrefix hook, as this handled by using
    the PkgInstallDirs record
  * Add an OS-hook, osPkgHtmlDir, which will expand the path
    to the provided package's html doc directory when
    installed (i.e., under the targetDir); this is used to
    provide the baseDir for the url munging that happens for
    a given package's html docs
  * Track the OS changes, providing values for the new OS
    hooks for genericOS so that the previous behavior is
    retained
* hptool/src/OS/Mac.hs
  * Track the OS changes, providing values for the new OS
    hooks so that the previous behavior is retained
* hptool/src/OS/Win.hs
  * Remove the steps to move the doc and bin files for each
    package, as they are no longer needed due to using
    PkgInstallDirs
  * Supply osGhcPkgHtmlFieldExtras to request ghc-pkg to not
    expand the pkgroot (instead, the expansion will be done
    in the munging functions in this module, which will yield
    relative, rather than absolute, paths)
  * Implement the path munging functions which appropriately
    substitute the $topdir and ${pkgroot} relative to a
    provided baseDir
  * Implement the osPkgHtmlDir function, expanding the
    installed html location given the particular package
* hptool/src/OS/Win/WinRules.hs
  * Track OS changes
* hptool/src/OS/Win/WinUtils.hs
  * Move toCabalPrefix from Win.hs to here
* hptool/src/Target.hs
  * Retain the lib-only dependencies (before adding alex or
    happy) in buildAction, for use with the cabal haddock
    changes; (there is no conf file for alex or happy, so we
    would bomb out when trying to get the conf file info for
    haddock)
  * Use the new OS hook, osPkgHtmlDir, to provide the baseDir
    to haddockAllCoreReadArgs and haddockAllPlatformReadArgs
  * In the "cabal configure" step, use osPkgInstallDirs to
    set the various path-related command-line args