Properly setup scope when doing uncommon exit and inlined blocks

This code had a hardcoded assumption that there was only one inlined
block, but there can of course be multiple. This code therefore walks up
the call chain to find the parent machine code to it can setup the scope
in the proper place.

This was causing issues where in case of an uncommon exit and multiple
inlined blocks, it would read bogus locals from another call frame.
Fix an inner method Range#can_iterate_from?

Prefer protected to private
--------------------------------------

* This method is just used by `self.each`.

Replace receiver for X19
------------------------

* `first` is gotten the `self.each`

refer
-----

  * https://github.com/rubinius/rubinius/pull/2272#discussion-diff-3778716
  * #2272