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.
Since I'm using `*args` right now, its not possible to do:
```python
def _api_call(self, *args, api_method, **kwargs):
```

For the moment I think that is better to have a nicer error message (using `*args`) than an explicit argument.
I've added to the docstring: `Note: is mandatory to have the kwarg 'api_method' defined.`