Include Slim helpers in the template's execution scope

Slim doesn’t include helpers in the template’s execution scope such as HAML, so we must do it ourselves. The approach used in this PR is similar to HAML (see [there](https://github.com/haml/haml/blob/4.0.5/lib/haml/engine.rb#L124-L127)), but simpler and way more efficient.

This patch allows to:
* use helper methods in Slim templates without inconvenient `Helpers.` prefix,
* access node’s variables and methods inside helper methods.

For example it allows to write helpers like:

```ruby
module Asciidoctor::SlimHelpers

  def section_level
    (@level == 0 && @special) ? 1 : @level
  end

  def section_numbered?
    sectnumlevels = (@document.attr :sectnumlevels, 3).to_i
    @numbered && @caption.nil? && section_level <= sectnumlevels
  end
end
```
I'd like to avoid the local assignment. Can we make this:

```
template_name == 'document' ? (template.render node).strip : (template.render node).chomp
```

Btw, the reason we do this is to avoid an unnecessary call to strip. Technically chomp is sometimes excessive, but we are shooting for some sort of reasonable consistency based on what the template engines spit out.