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.
Properly stop backend.
Lowercase signals names.
Do backend calls using kwargs.
Add SIGINT handler.
Add missing error/passed keys.
Move the backend starter to its own file.
Ask the backend for the country code.

Remove global variable in favor of a helper method that returns the
country code.
Needed in order to split backend/frontend.
Send the flag module values to the processes.

Add serialize/deserialize to dict helper.
Remove twisted stopper from the GUI.
Handle SIGINT/SIGTERM in processes.
Add file docstrings.
Comment out overly verbose logs for communication.
Add PyZMQ dependency.
Use main process to run frontend.

Running the GUI in a child process gives problems on OSX.
Also, change signal handling since we have less processes.