Added Z85 support

The use of binary for CURVE keys is painful; you cannot easily copy
these in e.g. email, or use them directly in source code. There are
various encoding possibilities. Base16 and Base64 are not optimal.
Ascii85 is not safe for source (it generates quotes and escapes).

So, I've designed a new Base85 encoding, Z85, which is safe to use
in code and elsewhere, and I've modified libzmq to use this where
it also uses binary keys (in get/setsockopt).

Very simply, if you use a 32-byte value, it's Base256 (binary),
and if you use a 40-byte value, it's Base85 (Z85).

I've put the Z85 codec into z85_codec.hpp, it's not elegant C++
but it is minimal and it works. Feel free to rewrap as a real class
if this annoys you.
Merge pull request #598 from hurtonm/master

Use generic session class whenever possible
Use generic session class whenever possible
Merge pull request #599 from hurtonm/master

Minor code refactoring
Merge pull request #597 from hintjens/master

Problem: working with binary keys is painful
Merge pull request #600 from hurtonm/master

Set socket buffers before establishing TCP connection
Check socket types during mechanism handshake