tutorial/motorctrl: reduce logging, change webtalk port number

on the bb writing lots of log to the SD disk causes erratic HAL
behavior, and the gladevcp component shows 'hunting' in the position

The port number 8080 is not a good choice - an apache2 default install
will use it, leading to a collision
machinetalk/webtalk: add [WEBTALK]OPTIONS=<int> (to deal IPv4only hosts etc)

[WEBTALK]

# suppress IPV6 - or bind will fail on ipv4 only hosts
# affects raspberrys
# see https://github.com/warmcat/libwebsockets/blob/master/lib/libwebsockets.h
# enum libwebsocket_context_options {
#       LWS_SERVER_OPTION_REQUIRE_VALID_OPENSSL_CLIENT_CERT = 2,
#       LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME = 4,
#       LWS_SERVER_OPTION_ALLOW_NON_SSL_ON_SSL_PORT = 8,
#       LWS_SERVER_OPTION_LIBEV = 16,
#       LWS_SERVER_OPTION_DISABLE_IPV6 = 32,
#       LWS_SERVER_OPTION_DISABLE_OS_CA_CERTS = 64,
#};
OPTIONS=32
haltalk: add keepalive MT_PING on halrcomp and halgroup PUB channels

currently a comp or group cant tell if the publisher has gone away, or
just has nothing to say. Publishing a keepalive message on all topics
for both sockets enables clients to determine server liveness.

Default value 2000ms.
use the '-K|--keepalive <msec>'  option to set this interval.
Set to 0 to disable keepalives.
build: import protoc-gen-depends into scripts
lib/machinekit: added launcher library
lib/machinekit/launcher: using mod_ext
lib/machinekit/launcher: added more options to rip_environment
scripts/rip-environment: deactivated complete and changed sytax to fix execution in non-bash environments
halcmd: improve error message on rtapi/msgd not running

this catches the typical installation error - 'missing sudo make setuid'
which makes rtapi_app exit immediately.
libmtalk/send_container(): make origin argument a std::string

this was an API oversight - default identity frames in zmq are not
C strings but blobs, so cant handle that with a char*
haltalk: adapt for send_pbcontainer() 'from' type change
webtalk: enable default identities (binary safe now)

due to the previous send_pbcontainer() API identities had to be strings.
this is not necessary any more.

Less surprises and lower overhead.
webtalk: integrate plugin build, add ZWS1.0 support

Websockets do not map well onto zeroMQ framing, so a policy is needed how
to translate messages depending on use case. this is what policy plugins
are for; those can be selected on a per-connection basis with the
policy=<name> parameter.

See webtalk_example_policy.cc and the Submakefile how to build a
custom relaying policy.

Plugins are loaded like so (multiple plugins possible):

webtalk  --plugin ../lib/webtalk/plugins/zws.o

The main policy used right now is 'json', which is built-in.

ZWS is a Websockets framing protocol to transport zeroMQ multiframe messages
and is better suited longer term, see https://github.com/somdoron/rfc/blob/master/spec_39.txt.
ZWS will be enabled by the policy=zws URI parameter.

It is implemented as a plugin for webtalk.
webtalk: ZWS example files and server

This is to enable experimentation with ZWS (https://github.com/somdoron/rfc/blob/master/spec_39.txt).

To run:
start the "chat" server:
  python zws-chat-server.py

in another window, start webtalk:
  webtalk --foreground --debug -1  --plugin ../lib/webtalk/plugins/zws.o  -w machinetalk/tutorial/htdocs/

in the browser, navigate to:
   http://127.0.0.1:7681/jsmq.html