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.

There was a bug for a specific middleware request which triggered it, if it is not array-ish.
So this only takes the first element if it really is an array-like object.