zbeacon: Use zinterface_list() in s_get_interface()
Merge pull request #588 from ahhentz/zinterface

zbeacon: Use zinterface_list() in s_get_interface()
Merge pull request #589 from ahhentz/bugfix

Some bugfixes
Problem: zauth and zbeacon don't work with new zsock API

These two classes demand a ctx argument, and it's impossible for apps
to pass the zsys singleton argument.

Solution: allow callers to pass NULL if they're using the new zsock
API. Then zauth and zbeacon will fetch the context from zsys.

Fixes #574

For next steps, I think we have to deprecate zauth and zbeacon in
their whole, and write new classes on zactor. I can't migrate zauth
to zactor without breaking existing applications (as they have to
use the same API for socket creation). So perhaps a new class,
zguard, and deprecating zauth along with the other v2 classes.

For zbeacon, it's easier as the entire class can be rewritten to
zactor and end up as a single function with an actor-style message
API:

    zactor_t *beacon = zactor_new (zbeacon, "9999");
    zstr_sendx (beacon, "SET INTERVAL", "250", NULL);
    zframe_t *frame = zframe_recv (beacon);
    ... etc.
Problem: selftest left socket dangling, if no networking

Solution: destroy service socket before exiting selftest; also had to
destroy shadow context properly to avoid deadlock at exit.
Implemented zauth using actor style

This cleans up the confusion between V2 and V3 APIs for zauth. If you are
using zctx and zsocket, then you will use the old V2 API in zauth_v2.
If you are using zsock, then you will use the new V3 API in zauth.

Also did various other small cleanups, particularly on on logging.
Improved zgossip API documentation

Note: the zgossip.h file is generated; this improvement was actually
made in zproto and then the files here regenerated.
Cosmetic cleanups and added zinterface man page
Added contributor guidelines
Was not building against ZeroMQ v2 or v3
mingw fix: DLL_EXPORT -> LIBCZMQ_EXPORTS

since commit 5dc41fe9a16d722fb675bbd3abe4c9f59c74d0e6,
DLL_EXPORT was renamed to LIBCZMQ_EXPORTS.
fix issue 572: match socket xor fd

previously a user could populate into zmq_pollitem_t
- a non-NULL libzmq socket
- a non-zero fd
and the code would search for both types.
this logic also precluded using fd==0

the new semantics only match for fd field if socket field is invalid.
i.e. socket==NULL
Merge pull request #590 from pijyoi/master

mingw fix: DLL_EXPORT -> LIBCZMQ_EXPORTS
Merge pull request #591 from pijyoi/issue572

fix issue 572: match socket xor fd
Fix code style in zinterface
Fix memory leak in zinterface_list
Use prime numbers for hashtable sizes.
Split out hash table resizing into static function.
Add limit on the chain length in hash tables.
Document table design.