add spyAll()
refactoring for using _.functions
add empty event spy checking
add restoreAll()