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.
Specifying multiple config files could be useful for automation. A wrapper program could, according to its arguments, call sitediff with a different set of config files. Otherwise, the wrapper would have to write a YAML file to disk, which is a little ugly.

I think YAML references are a bit advanced for something like this. I personally prefer globals, but we'll see!