New frontend/backend architecture.

For review purposes - **DO NOT MERGE**

Notes:
* The separation is working pretty well.
* There are a lot of logs printed for all the messaging going on between components, we will disable this before merging this.

Todo:
- [x] forward flags module configured using arguments to the processes.
- [ ] remove logs for each communication
- [x] handle SIGINT/SIGTERM in processes

Main changes:
* frontend and backend in different processes
* communication using ZMQ

You can take a look at https://github.com/ivanalejandro0/frontend-backend-zmq-test to see a minimal app using this communication structure.
Why use a tuple when you can just use `api_method, **kwargs` directly?