minor, provide pimmel-moni to dump all pimmel traffic to stdout

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'feat/moni' into next

* feat/moni:
  minor, provide pimmel-moni to dump all pimmel traffic to stdout
fix, PEBKAC, always define PMML_DEBUG() as macro

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, PEBKAC, for PMML_DEBUG() in pimmel.c include stdio.h

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, PEBKAC, don't use ZMTP_STR convenience macro for identities (which can be NULL)

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, distinguish between tcp and udp when hanging up router sockets in rtr_cb in pimmel-router

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, use identity slot in messages to prevent router/dealer loops

The idea is to pass a random 32b number around.  The probability that bit I
is set shall be 50% ideally.  Every router |s its own random cookie onto
the cookie read.  So it's 16 bits free after the first hop and 8 bits free
after the second hop, and so forth.  So roughly we can detect 4-hop loops
safely.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'feat/proxy' into next

* feat/proxy:
  minor, use identity slot in messages to prevent router/dealer loops
  minor, distinguish between tcp and udp when hanging up router sockets in rtr_cb in pimmel-router
  fix, PEBKAC, don't use ZMTP_STR convenience macro for identities (which can be NULL)
  fix, PEBKAC, for PMML_DEBUG() in pimmel.c include stdio.h
  fix, PEBKAC, always define PMML_DEBUG() as macro
Merge branch 'next'

* next: (26 commits)
  minor, use identity slot in messages to prevent router/dealer loops
  minor, distinguish between tcp and udp when hanging up router sockets in rtr_cb in pimmel-router
  fix, PEBKAC, don't use ZMTP_STR convenience macro for identities (which can be NULL)
  fix, PEBKAC, for PMML_DEBUG() in pimmel.c include stdio.h
  fix, PEBKAC, always define PMML_DEBUG() as macro
  minor, provide pimmel-moni to dump all pimmel traffic to stdout
  minor, use pmml_send() in dlr_data_cb() to offload the pack on the wire again
  fix, PEBKAC, don't call listen() on DGRAM sockets
  minor, provide pimmel-dealer program to capture messages from a router socket and blast them to the link-local pimmel network
  hygiene, don't print errors (through perror()) in pmml_router_socket() core function
  cosmetics, follow if/else-if-chains coding style
  minor, support -d|--daemonise for pimmel-router
  minor, provide pimmel-router program to capture all messages and route them to a specified remote address
  chore, check for netdb.h header so we can use getaddrinfo()
  minor, guard find_sockasso() against deref'ing NULL ptr
  minor, lift PMML_CHNMSG_HAS_IDN (struct pmml_chnmsg_s flag) to pimmel.h
  minor, rename sock specifiers PMML_FL_* -> PMML_*
  minor, iterate over all messages in pmml_wait() if less bytes than read are consumed
  doc, code, explain that pmml_chck() and pmml_pack() will work regardless of subscriptions
  minor, change output signature of pmml_chck(), return the number of bytes consumed
  ...