[IR] Work around incorrect scope depths in AST local var nodes

* AST doesn't seem to be implementing shadowing properly and
  sometimes has the wrong depths which screws up variable access.

  Check scope depths for 'a' in the closure in the following snippet:
      "a = 1; foo(1) { |(a)| a }"
  In "(a)", it is 0 (correct), but in the body, it is 1 (incorrect)

* So, we implement shadowing in IRClosure by searching for an
  existing local var from depth 0 and upwards and setting
  scopeDepth to not what AST gives us but based on where we
  found the variable.

* We could either decide to leave this shadowing implementation in
  place or rely on AST (in which case this has to be fixed in
  the AST node).

* This patch fixes the output for this snippet and eliminates
  mspec failures for spec/ruby/language/block_spec.rb

def foo(x); yield x; end
a = 5
puts foo(2) { |(a)| a }