add idea for refactoring tests with tester and spies

@ianstormtaylor @yields initial look/feel of the normalized api for integration testers. what works what doesn't?
i think i'd like to change this to be `.called(spy, args...)` so that we dont have to cache internal state here (and since it use to be nicer `.with` but not its just a bit more confusing anyways