Merge pull request #153 from hintjens/master

Problem: mixing commands and messages is clumsy
Problem: Hard to check message type without destroying it

Solution: Implement is_class function to check signature and id.

In more details, if I can receive the same way various different
messages, I need to branch based on the message type so I can properly
reply. Easiest way would be to try decoding message, but that will
destroy the message, so implementing is_class function, that checks for
valid signature and message id without destroying the message.
Merge pull request #154 from miska/master

Problem: Hard to check message type without destroying it
add server template for clojure.
Merge pull request #155 from mknoszlig/master

Problem: can't generate clojure server according to model file.
remove client state on terminate.
Merge pull request #156 from mknoszlig/master

Problem: clojure server terminate function is a no op.
Whitespace fixup
Comment fixup
Problem: expiry timers are not scalable for many clients

See https://gist.github.com/hintjens/795ddedd577e3e0f00fc

Solution: use tickets instead of timers. I've not tested the
performance change in zproto_server yet, just simulated it with
the above test case, and ensure that nothing has broken so far.

I'd be very interested in any results from people with the
infrastructure to test hundreds or thousands of clients.