Rewrite set-callbacks function

Fn -> Macro
Rename to with-callbacks
Add tests
Should fix issue #84
Why does this have to be a dynamic var?