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

The actual value is still hardcoded though and not read from the configuration. But the TODO can be moved to where the value is defined :smiley: 
I set the initial delay to a random number since all executors send their own requests for work and I wanted to avoid all executors asking for work at the exact same time. I guess that's not really a problem though and the introduction of randomness is something one wants to avoid. I'll remove it!