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
Merge pull request #579 from hintjens/master

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