Fix #1969: Make StaticScope and IRScope agree on var slot assignment

* IRBuilder was ignore duplicate "_" args in blocks whereas the parser
  would allocate slots in StaticScope for all of them. This effectively
  led the runtime to allocate DynamicScope with 1 fewer slot than what
  was required because a variable's slot id came from StaticScope
  but # variables for a DynamicScope came from IRScope.

  We are yet to find a way to clean up this static/lexical scope
  duplication/split from the old runtime.

* Added a new spec/regression test.