Remove AppOp and Backend loops
After #550 (closed) is done, we can call functions and spawn threads directly and modify the state from there instead of having two loops passing messages. This is a step towards async dispatch of requests.
After #550 (closed) is done, we can call functions and spawn threads directly and modify the state from there instead of having two loops passing messages. This is a step towards async dispatch of requests.