Zmq architecture

Maybe have an abstract `Socket` class that will be the base for `ApplicationSocket`, `ServerSocket` and `ClientSocket`? If you think that is a good idea you can use [abc](https://docs.python.org/2/library/abc.html) for that.