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.
Hmm.. Thanks for catching that! How about we quit complaining about merge conflicts altogether and let the including file override scalar values (this also solves the problem you raised)?  Here's a [patch](https://gist.github.com/amirkdv/8aaf815328a5e0b9ac98).

However, we have to support a different kind of "merge" which is when multiple config files are given. Would this behavior be acceptable for this other kind of merge?

More general notes (out of scope for this PR):
- I don't see a point for having multiple config files. Maybe we should get rid of them and only allow composition through `includes:`?
- I also have doubts about allowing globals (the only point is concision?).  They make config files hard to read and add an unecessary "trick" factor (both to sitediff code and to config files). I don't know how significant the concision factor is. We have YAML references after all:

        before:
          dom_transforms: &dom
          - type: remove

        after:
          dom_transforms: *dom