Refactor some spy-related internals

- extract method for deciding to use private IMP
- clarify use of spied class vs. original public class
- remove near duplicate private method