Fallback to object.method when necessary

Certain strangely built proxy objects can mess with out "no tampering" method lookup code, in those cases we'll try to perform the lookup the old fashioned way as a fallback, this was fixing #591 for me yesterday but for some reason I now can't replicate that, nor can I replicate it working on 2.14.2
I think it would be good and less confusing to make specs for these cases using test doubles:

``` ruby
# for one case
object = double(:method => :not_a_method)

# for anther case
object = double
allow(object).to receive(:method).and_raise(Exception, "boom"
```