Safer restoration of stubbed method visibility. Fixes #141.

It is possible for `Module#public`, `#protected` and `#private` to be
redefined on descendant classes, so it' safer to use the original
version of these methods on `Module` when restoring the visibility of
stubbed methods.

Rather than add a completely new set of tests for these scenarios, I
have just embellished the existing tests. It's not ideal, because it
makes it less clear what's going on, but I think it'll do.