Add specs on Rubinius::Type#check_convert_type and objects with private methods.
Add specs on Array#initialize and objects with private #to_ary.
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.
Add specs on Rubinius::Type#object_respond_to_ary?
Implement Rubinius::Type#object_respond_to_ary?
Fix Array#initialize with coerceable object.
Fix destructuring assignment with coerceable object.
Fix Kernel#Array with coerceable objects.
Add specs on destructuring assignment and objects with #to_ary returning nil.
Fix Array::to_ary in case value#to_ary returns nil.