Raises the original exception when #to_ary raises

When the argument is a splat, #to_ary is not called in MRI 1.9
Checks if #to_ary raises an exception

If `#to_ary` was redefined and being yielded, an crashed occurred.

Fixes it by finding every `send(state, call_frame, G(sym_to_ary))` call
in a object and checking if it is null. If it is, an exception occurred,
so we run it.

Example (see #2347):

```ruby
require 'test/unit'

class TestFoo < Test::Unit::TestCase
  def test_foo
    obj1 = Object.new
    obj2 = obj1.dup
    def obj1.to_ary
      raise
    end
    assert_equal([obj2], [obj1].flatten)
  end
end
```

Fix #2347
Set obj instead of return when va_args is present
Merge pull request #2356 from badosu/2347-block-crashes-when-to_ary-raises-exception

Checks if an exception happened when yielding