Add curve authentication to backend/signaler communication.

Generate a key pair for the backend and one for the frontend and then it
sends to each process allowing them tocommunicate securely.
Split communication logic from implementation details.

This allows us to handle the ZMQ communication between components
independently of the details of the demo-app itself.
Add restriction to use only kwargs on calls.
Use stdlib's json to ensure receiving unicode.