Use a dict instead of an object to ease serialization.
Separate app.py and frontend_app.py logics.

This prepares the scenario to run the frontend and the backend in
different processes.
Add base communication framework.
Add API/SIGNALs definition.
Add license headers.
Use new frontend/backend structure in LEAP implementation.
Use new backend/signaler and start logic in processes.
Lowercase signals names.
Do backend calls using kwargs.
Add SIGINT handler.
Add missing error/passed keys.