Spy is constructor, not class; add 2 more tests.

Correct some places where I was calling `new Spy()` instead of `Spy()`. Behavior is the same because of how JavaScript's `new` keyword is implemented, but semantics was all wrong in my opinion. Also added two more tests pertaining to failing guard and exit event.