Replace Callbacks with a list of callbacks on Effect

processing callbacks is now iterative instead of recursive, and
testing utilities are now a lot simpler.