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.
Load curve certificates from files.