Merge pull request #936 from soundart/master

cmake: fix test_fork,  fix fragile code related to HAVE_FORK macro
fixed msvc dll output path
removed dependency on deprecated encoder_base::has_data() method
removed norm_engine dependency on deprecated encoder_base::has_data() method
Merge pull request #937 from snikulov/fix_dll_out_path

cmake // fixed msvc dll output path
Merge pull request #938 from bebopagogo/master

norm_engine update with no encoder_base_t::has_data() dependency
Fix building on MinGW64 Windows

Mingw64 provides mstcpip.h and the build fails (redefinition) if the struct tcp_keepalive is redefined. Do not define the struct if __MINGW64__ is defined. Note that I had to manually pass the compile definition to cmake: -D__MINGW64__=1
Merge pull request #941 from veegee/master

Fix building on MinGW64 Windows
Include zmq.h after platform.hpp

zmq.h requires definitions from platform.hpp so include platform.hpp before zmq.h. This is only an intermediate fix though. zmq.h should not require definitions from platform.hpp because platform.hpp is not installed. So, when zmq.h wants to include <inttypes.h> on ZMQ_HAVE_SOLARIS || ZMQ_HAVE_OPENVMS, it will not and fall back to #include <stdint.h> which will fail when building something like pyzmq on Solaris 8, 9/SPARC which do not have <stdint.h>
Allow iov_base as char * on Solaris 8/9/10.

On Solaris 8, 9, 10/SPARC, iov_base is of type caddr_t which is char *. The Sun C++ compiler errors with "Cannot assign void* to char*". Using a static case to override this. On Solaris 11, HP-UX, AIX, and RHEL, iov_base is void * so no issues there. This seems a rather hackish solution so open to something better.
Merge pull request #944 from twwlogin/patch-1

Include zmq.h after platform.hpp
Merge pull request #945 from twwlogin/patch-2

Allow iov_base as char * on Solaris 8/9/10.
cmake: use FindSodium module