[IR] Continuation of a8955a6a + subtle bug fix from that commit

* Specialized code for common-case single arg yield.
* DRYed out some code duplication introduced in a8955a6a.
* Fixed a subtle bug I introduced in the refactoring there (but
  not caught by existing MRI tests - test_yield.rb).