Coercing to array via #to_a also works when it's private.

This fixes the following situation:

class T
  private

  def to_ary
    [1, 2]
  end
end

a, b = T.new

Before: NoMethodError to_ary on instance of T
After:  a = 1, b = 2
Add specs on Rubinius::Type.object_respond_to?
Extended primitive vm_object_respond_to? with visibility flag according to language version.

1.8 mode default is to not look for private methods, while 1.9 mode
default is the opposite.
Fix Array#initialize with coerceable object.
Fix destructuring assignment with coerceable object.
Fix Kernel#Array with coerceable objects.