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
```
> So this is the reason why this class looks so spaghetti-like? You’ve exchanged a few milliseconds for code duplication and worse readability? 

Correct. One of the most alluring features of Asciidoctor is the speed...quite unexpected give it is written in Ruby. And I keep finding ways to speed it up. True, we've had to cut some corners to get there, but since the core logic remains fairly stable it's reasonable to optimize in this area. I'm really not that concerned if the readability has to suffer slightly in this area...and it's really not that bad (otherwise, I would hate it myself). Where we can be much freer to write "clean code" is in the extensions.