Reenable respond_to? caching logic.

The respond_to? call site logic was disabled because it did not
take into account respond_to_missing?. Whenever respond_to?
returns false, 1.9+ needs to check respond_to_missing? in case the
method in question is implemented by method_missing. We disabled
all respond_to? caching until we could figure out a safe way to do
this caching in 1.9 mode.

In this commit, we use the following logic to know whether we can
cache the result of a respond_to? call:

IF we are in 1.8 mode
OR respond_to? returned true
OR respond_to_missing? is not overridden
THEN cache

We will not cache, then, if we're running in 1.9 mode AND
respond_to? returned false AND there's a custom
respond_to_missing? defined. This should cover all appropriate
failure cases and allow us to cache the much more common normal
respond_to? cases.

Numbers before and after:

BEFORE:
                                          user     system      total        real
control, 1 and :to_ary                0.030000   0.000000   0.030000 (  0.031000)
1m 1.respond_to?(:to_ary)             0.060000   0.000000   0.060000 (  0.061000)
1m 1.respond_to?(:to_ary,true)        0.070000   0.000000   0.070000 (  0.069000)
1m 1.respond_to?(:next)               0.040000   0.000000   0.040000 (  0.034000)
1m redefined obj.respond_to?          0.020000   0.000000   0.020000 (  0.025000)
1m varying name respond_to?           0.030000   0.000000   0.030000 (  0.026000)

AFTER:
                                          user     system      total        real
control, 1 and :to_ary                0.030000   0.000000   0.030000 (  0.032000)
1m 1.respond_to?(:to_ary)             0.010000   0.000000   0.010000 (  0.011000)
1m 1.respond_to?(:to_ary,true)        0.010000   0.000000   0.010000 (  0.015000)
1m 1.respond_to?(:next)               0.010000   0.000000   0.010000 (  0.011000)
1m redefined obj.respond_to?          0.020000   0.000000   0.020000 (  0.023000)
1m varying name respond_to?           0.020000   0.000000   0.020000 (  0.024000)

In additionm this should reduce calls to our per-class cache
substantially in cases where the argument passed to respond_to? is
the same and the target object's type is not changing.