Update flag descriptions in the User's Guide

Summary:
This patch is a huge update of:

a) Section 4.19 of User's Guide (Flag reference)

b) Section 4.10 of User's Guide (Optimisation)

c) DynFlags: there are only cosmetic changes but the amount of changed lines is huge.

User's Guide got completely out of sync with the actual code: many descriptions were missing or incorrect. This patch improves the situation a lot. Not everything is perfect however and as part of my work I'm making a list of flags that need better descriptions. Once this patch lands I plan to mail that list to ghc-devs and encourage people to fix the incomplete descriptions.

Note also that not all problems listed in #9358 are fixed. I'll deal with them tomorrow.

My plan is to land this patch tomorrow (Thursday).

Test Plan: ./validate + eye-balling the documentation

Reviewers: hvr, austin

Subscribers: thomie, carter

Differential Revision: https://phabricator.haskell.org/D444

GHC Trac Issues: #9358
More work on updating User's Guide