rename variables as to not class with possible method names
use a class instead of a hash for call logs
add more test coverage, and add Spy.off, Spy.teardown, Spy#unhook, Spy#calls
move arity_range to spy object instead of scope
make pen_write_spy a normal variable instead of an instance variable in tests
can set return values on spies