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.
This excludes the following situation:

In foo.yml
```
include: bar.yml
before:
   selector: foo
```

In bar.yml:
```
selector: bar
```

It seems to me like we want this to be legal, with the parent (more-specific) yml file overriding more-general child. Do you have an opinion?