Feature/rest calls

- Apologies for the large PR, fixing the tests took some refactoring
- To make the demux executors non-blocking, I added some become/unbecome logic 
- Moved the request work to the executors and they will only pass the request up to parent if they are idle. Not sure if this is ideal
- Return response codes from the api endpoints

Right now, only the demultiplexer actors/executors use them, so they could be moved down but I figured that it could be a general response from e.g. executors and therefore it would make sense to put it in the main protocol.