commandline-documentation: Add `notes` field to commands

- modify any existing commands appropriately
  (move certain contents from the commandDescription to commandNotes)
- modify the `commandHelp` function: reorder the help texts:
  synopsis - usage - description - flags - notes
commandline-documentation: Refactor, purely

- remove makeCommand smart constructor
  (commands are easier to read/handle that way)
commandline-documentation: Rewrite/Add texts for many commands
commandline-documentation: Add and Modify two paragraphs
commandline-documentation: Add some relevant-config-keys
Fix comments in cabal-install/Main.hs
commandline-documentation: Change UserHooks description
commandline-documentation: More description to user-config command
Merge branch 'master' into documentation

Conflicts:
	cabal-install/Distribution/Client/Setup.hs
	cabal-install/Main.hs
Change globalCommands description generation

- previously, runCommands internally modified the description
  by adding the list of commands.
- now, globalCommands is a function that builds the complete
  description without need for changes during runCommands invocation.
- slightly more code duplication, but better separation of concerns
commandline-documentation: Add structure to command listing in `cabal help`
Start support of relocatable builds
Enable support for relocatable libraries
Enable registration of relocatable packages
Fix library documentation paths
Setup correct package registration paths for relocatable packages
Relocatable flag not passed to older versions of Cabal
Correctly set rpaths
Correctly name flag restriction
Correctly calculate relative paths for relocatable packages