Avoid loops and calls of expensive methods

MRI2.0
------

* #frame_count counts the number of itens in
 `RubyVM::DebugInspector#backtrace_locations` instead of `callers.count`
* Refactor condition of `@iseq.nil?` on #frame_type and #frame_description
* Use a (1..n) mapping of bindings on #callers instead of looping
* Share code that setup the binding from a location for #callers
 and #of_caller

```
    ❯ gc master
    Switched to branch 'master'
    ❯ ruby examples/benchmarks.rb
                     user     system      total        real
    #of_caller  16.760000   0.000000  16.760000 ( 16.771434)
    #frame_count  7.880000   0.000000   7.880000 (  7.893651)
    #callers     8.040000   0.000000   8.040000 (  8.043962)
    #frame_description  8.860000   0.000000   8.860000 (  8.866258)
    #frame_type 12.560000   0.000000  12.560000 ( 12.575982)
    ❯ gc avoid_loops
    Switched to branch 'avoid_loops'
    ❯ ruby examples/benchmarks.rb
                     user     system      total        real
    #of_caller   6.330000   0.010000   6.340000 (  6.346398)
    #frame_count  3.010000   0.000000   3.010000 (  3.011249)
    #callers     6.280000   0.000000   6.280000 (  6.288488)
    #frame_description  3.410000   0.000000   3.410000 (  3.413291)
    #frame_type  3.450000   0.000000   3.450000 (  3.448674)
```

RBX
---

* #frame_count counts the number of itens in `Rubinius::VM.backtrace(1)`
 instead of `callers.count`
* Use a (1..n) mapping of bindings on #callers instead of looping
* Share code that setup the binding from a location for #callers
 and #of_caller