Fix spec that created the wrong stasher instance.
Fix 1.8.7 failure by putting special-case code for 1.8.7.

On 1.9+, the following code snippet works fine but it fails on
1.8.7 with `TypeError: singleton method bound for a different object`

  klass = Class.new do
    def self.say_hello; end
  end

  subclass = Class.new(klass)

  hello_method = klass.method(:say_hello)
  (class << klass; self; end).__send__(:define_method, :say_hello, &hello_method)

  subclass.say_hello

The best we can do is to revert to the old stashing/unstashing code
for 1.8.7.