Merge pull request #589 from ianbarber/master

Add test for CURVE mechanism
Refactor how properties are parsed
Merge pull request #590 from hurtonm/master

Refactor how properties are parsed
Rename parse_properties to parse_metadata
Merge pull request #591 from hurtonm/master

Rename parse_properties to parse_metadata
Store identity for raw socket

Identity stored during connect procedure. Can be read using
zmq_getsockopt and used as the identity frame when sending messages.
This allows the implementation of a raw socket client.
Merge pull request #592 from gavinmcniff/master

Store identity for raw socket
Added ZMQ_STREAM socket type

- designed for TCP clients and servers
- added HTTP client / server example in tests/test_stream.cpp
- same as ZMQ_ROUTER + ZMQ_ROUTER_RAW + ZMQ_ROUTER_MANDATORY
- includes b893ce set ZMQ_IDENTITY on outgoing connect
- deprecates ZMQ_ROUTER_RAW
Merge pull request #593 from hintjens/master

Problem: ROUTER+RAW was not a clean API
Simplify ZMQ_STREAM socket implementation
Merge pull request #594 from hurtonm/master

Simplify ZMQ_STREAM socket implementation
Fixed zmq_errno function definition
Minor whitespace fixes in man page
Simplify ZMQ_STREAM socket implementation, part II
Merge pull request #595 from hurtonm/master

Another ZMQ_STREAM simplification
Updated security mechanisms to use variable-length commands

RFC23, RFC24, RFC26 now use variable-length command names that
end in null octet (valid C strings) instead of fixed-length
space padded strings.
Simplify ZMQ_STREAM socket implementation, part II
Return EINVAL when trying to use CURVE without libsodium
Merge pull request #596 from hintjens/master

Problem: mechanisms are lagging behind specs
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.