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.
Something like this?

```slim
= block_with_captioned_title 'listingblock'
  .content
    - highlighter = document.attr 'source-highlighter'
    - if style == 'source' && highlighter == 'html-pipeline'
      pre lang=source_lang
        code =content
    - elsif style == 'source'
      - code_class = "language-#{source_lang}" if source_lang
      - case highlighter
      - when 'coderay'
        - pre_class = 'CodeRay'
        - code_class = nil
      - when 'highlight.js'
        - pre_class = 'highlightjs'
      - when 'prettify'
        - pre_class = 'prettyprint'
      - when 'pygments'
        - pre_class = 'pygments'
        - code_class = nil
      pre class=[pre_class, 'highlight', ('linenums' if attr? :linenums), nowrap?]
        code class=code_class data-lang=source_lang =content
    - else
      pre class=nowrap? =content
```