Fixed a syntax mistake regarding blocks in specs.

The block wasn't passed to `raise_error`, due to missing parenthesis
around it and the block.
Adding them would've looked a bit awkward, so I put the second
expectation in a lambda and passed it as a block to `raise_error`.
Add specs on Module#const_get raising a NameError with missing constant.

NameError should be raised with the missing constant as the second
argument, so it would show up when calling `#name` on the error.
Module#const_get: raise NameError with missing constant name.
Add specs on destructuring assignment and objects with private #to_ary.
Add specs on destructuring assignment and objects with private #to_a.
Add specs on Kernel#Array and objects with private #to_ary.
Add specs on Kernel#Array and objects with private #to_a.
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.
Add benchmarks for String#delete and String#tr
Fix Array::to_ary in case value#to_ary returns nil.