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 is this part of the backend? This is technically a part of the frontend

I didn't make a separation for backend and frontend, I put all the backend/frontend stuff together in the backend folder.

Should I rename to something more meaningful?
I'd prefer not to mix this with other files in `gui/`.