The prepend logic isn't just for classes.

It's for any object with a prepended module in its
singleton class's ancestor chain.
Improve prepended module detection.

- Add spec showing that we don't mutate the ancestor
  chain in cases where there is no prepended module
  overriding the method.
- Handle objects with multiple prepended modules.
- Extract prepended_modules method on proxy. It
  is memoized, which can improve perf a bit if
  multiple methods get stubbed.
- Rename method.
Ensure we always get a viable prepended module.

- If the user prepends another module between examples,
  our module may no longer take precedence.
- Fix the pollution spec -- it wasn't actually failing properly.
Extract prepend detection into RubyFeatures.