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: detects merge _conflicts_ and _circular references_.
* 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.
  * Don't default on `[ '/' ]` if no paths are given.
Ok, let's just get rid of `--failing-paths` entirely then, and allow the user to specify `--paths=output/failures.txt`