Refactor slim/html5 templates using Helpers

I’ve refactored Slim templates for HTML5 backend in order to separate most of logic into helpers, make templates more clear, simpler and “DRY”.

This PR includes seven previous (not yet merged) PRs and also some future changes/fixes. I’ll rebase it later to make it more clear, so consider this PR just as a preview for review. The most important commit is [this](https://github.com/jirutka/asciidoctor-backends/commit/d7dce1b40b7e9479ab84253113194f2619780eb9).

I depends on changes in the upcoming Asciidoctor 1.5.2.
This is really not a good practice – `@id` is _not_ a property access, it bypasses the property reader (aka getter) `id` and accesses the private instance variable `@id` directly. IMHO this _should not_ work, it’s just an undesirable side effect that is related to how Slim/Haml template engine works. It seriously breaks encapsulation. What if you one day decide to rename `id` property to something else? You can’t simply alias to instance variable, but with a property reader it’s not a problem.

We really should avoid direct instance variables access.