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

There is no way of checking internal state - only messages. So I'd guess we have to send a message that we know will change it's receive state, and then send other messages and check that it's exhibiting the desired behavior. Did you check the test coverage with `scoverage:test`, and make sure that all cases were covered? If so we should be good.