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`
add JavaScriptFFI known language extension
add GHCJS compiler flavor
Add the js-sources and various ghcjs-options fields to PackageDescription

This patch adds the js-sources field, for JavaScript source code
that should be included in compiled programs, similar to c-sources
for other targets.

It also adds ghcjs-options, ghcjs-shared-options and ghcjs-prof-options
and makes the underlying code for options easier to extend.
use CompilerInfo rather than CompilerId for resolving flags and
path templates.

CompilerInfo contains more information about the compiler than
CompilerId, which just stores the flavour and version. In particular,
CompilerInfo knows an AbiTag, which can be used to tell binary
incompatible results from the same compiler apart, and detailed
information about supported languages and extensions.

Some fields in CompilerInfo may be left unknown (Nothing). This can
be used in the future to allow partially resolving configurations
based on supported languages or extensions.
Merge pull request #2239 from luite/master

add GHCJS fields and generalise flag handling
bootstrap.sh: bump versions.
Also build profiling C objs with '-fPIC' when GHC is dynamic.
Start support of relocatable builds
Enable support for relocatable libraries