Fix issues with callback order

* Fix operation_ not being reset when callbacks occur synchronously
* More debugging tools (PrintStackTrace, PrintCallbackChain)
* Move IOperation/Operation to operation.hpp