Rewrite set-callbacks function

Fn -> Macro
Rename to with-callbacks
Add tests
Should fix issue #84
Really? We have more reliably way of synchronising things on the JVM.