Add ZMQ_REQ_SEND_RESETS option.

This allows making a new request on a REQ socket by sending a new
message. Without the option set, calling send() after the first message
is done will continue to return an EFSM error.

It's useful for when a REQ is not getting a response. Previously that
meant creating a new socket or switching to DEALER.
REQ: Unset reply_pipe if it terminates.

* Fixes a terminate() call on a dangling pointer in the SEND_RESETS
  case.
* Fixes recv_reply_pipe() never receiving a message once the pipe it is
  waiting on is terminated.
Merge pull request #619 from ckamm/req-send-resets

Add ZMQ_REQ_SEND_RESETS option.
Rename ZMQ_REQ_SEND_RESETS -> ZMQ_REQ_STRICT.

It defaults to enabled. Switch it off to be able to send a new message
before the previous reply has been received.
Merge pull request #622 from ckamm/req-strict

Rename ZMQ_REQ_SEND_RESETS -> ZMQ_REQ_STRICT.
Fix compile error on windows.
Merge pull request #623 from ricnewton/master

Fix compile error on windows.
Port tests to windows and add to cmake build.
Fix up threading code from port tests to windows.
Merge branch 'master' of https://github.com/zeromq/libzmq
Fix running tests from cmake on linux.
Implemented zmq_send_const
Added zmq_send_const test
Fix doc typo
Add #include to string.h in blob.hpp

Required for memmove(), memcpy()
Add try_lock() to mutex_t
Add scoped_lock_t syntactic sugar
Declare ZMQ_CONFLATE option
Implement double buffer for conflate option

Add simple double buffer implementation tailored to handle msg_t,
i.e invoke msg_t::close instead of destructor and so on.
Seems to me mutex is good enough at this point.
Plug in dbuffer to serve the ZMQ_CONFLATE option

ZMQ_CONFLATE option is passed to pipepair() which creates a usual
ypipe_t or ypipe_conflate_t and plugs it into pipe_t under a common
abstract base.