Both STREAM and ROUTER sockets suffer from a naming problem on outbound connections. While these connections can be created, they can't be immediately used. Traffic must be received before it can be sent. This prevents practical, minimal usage of STREAM or ROUTER as a true N fan in/out socket.

This change simply provides the user with a socket option that sets a user defined name of the next outbound connection:

zmq_setsockopt(routerSock,ZMQ_NEXT_IDENTITY,"myname",6);
if(0 > zmq_connect(routerSock,"tcp://127.0.0.1:1234")) return 1;
ret = zmq_send(routerSock,"myname",6,ZMQ_SNDMORE);
zmq_send(routerSock,b.mem,b.used,0);

In this example, the socket is immediately given the name "myname", and is capable of immediately sending traffic.

This approach is more effective in three ways:
1) It prevents all sorts of malicious peer naming attacks that can cause undefined behavior in existing ROUTER connections. (Two connections are made that both transmit the same name to the ROUTER, the ROUTER behavior is undefined)
2) It allows immediate control of connections made to external parties for STREAM sockets. Something that is not possible right now. Before an outbound connection had no name for STREAM or ROUTER sockets because outbound connections cannot be sent to without first receiving traffic.
3) It is simpler and more general than expecting two ROUTER sockets to handshake on assigned connection names. Plus it allows inline sending to new connections on ROUTER.
fixed define value in header
Merge pull request #834 from Prarrot/master

Updated STREAM and ROUTER sockets to allow for pre-naming of outbound connections
Fix cmake configure error from deleted test.
Fix unused parameter and variable warnings.
Fixed compile issue with missing member of socket_base.  Changed ZMQ_NEXT_IDENTITY to ZMQ_NEXT_CONNECT_PEER_ID.

Fixed case where ZMQ_NEXT_CONNECT_PEER_ID is used in ROUTER, and ROUTER does not read the identity message from the connected pipe.
Merge pull request #837 from arsenm/master

Fix cmake build and warnings
Merge pull request #838 from Prarrot/master

Fixed compile issue with missing member of socket_base.  Changed ZMQ_NEX...
Cleaned up option to force identity on outgoing connection

- renamed to ZMQ_CONNECT_RID
- fixed whitespace malformating around previous patch
- renamamed next_peer_id to next_rid in preparation for
  larger rename of IDENTITY to ROUTING_ID

Note: ZMQ_CONNECT_RID has no test case and no entry in the man
page, as yet.
Merge pull request #839 from hintjens/master

Cleaned up option to force identity on outgoing connection
Fixed duplicate variable declaration.
Added test for ZMQ_CONNECT_RID
Updated man entries, and added behavior in case the user duplicates peer ids.  In this case the socket reverts to default behavior.
Merge pull request #841 from Prarrot/master

ZMQ_CONNECT_RID tests and man
Fix compilation of tests on MSVC 2008
Fix CMake tests - delete non-existing test_connect_rid
Merge pull request #842 from ipechorin/master

Fix compilation of tests on MSVC 2008
factorize code in proxy
added test_connect_rid file and added to CMakeLists again.
tabs to spaces