Config cleanup

@vasi Please review the following and merge if OK.

Included in this PR (see commit messages for details):
* major change: reorganize config merging/loading (see d123e87 e47f276):
  * pull out `url_report` out of `Config`.
  * Retire `Config::Site`, instead store everything in a hash but explicitly normalize it.
  * Merging multiple config file arguments and merging `includes:` is done identically, no more confusing duplicate code.
  * Fix `includes:`: actually works + merge conflicts and are circular references are detected.
* minor changes:
  * remove `--paths-from-failure`, instead expose `--failing-paths`.
  * don't crash if `--random-opt` is given.
  * wipe out `<output>/diffs` every time.
  * Let `--paths` be the main option and `--paths-from-file` an alias (instead of vice versa). Same with all other _too-long_ options.