Refactoring and bug fixing

Here a list of things this PR addresses:
* update and fix gem dependencies
* use `fail` instead of `raise` for asserting
* use `tidy` executable in current `$PATH` if available, else fallback to gem-included version
* only check HTML-ish files, prevents errors for PDFs and other stuff
* split HTML and CSS into separate runners - allows disabling of one part  with `HEADHUNTER_CSS=false`
* use the correct url for each validation if available

Let me know which parts you like, maybe you want to cherry-pick only certain commits - which is fine with me.

What's the advantage of doing it this way?