Use per thread not vm register 0 vector for string vector

  This is part of some rework to allow different vector type
temporaries in vm registers, and use only the per thread vector
for string input/output.
Properly handle print character format and zero byte argument
Add optionally built SDL2_net wrapper interfaces

  The mapping is very close to prefix change:
SDLNet_			net.
SDLNet_TCP_		net.tcp.
SDLNet_UDP_		net.udp.

  Major difference are type names:
SDLNet_SocketSet	net.socket_set_t
IPaddress		net.address_t
TCPsocket		net.tcp.socket_t
UDPsocket		net.udp.socket_t
UDPpacket		net.udp.packet_t

  Interfaces are almost identical with a few exceptions like the SendV
and RecvV related udp interfaces are not implemented due to not being
cost efficient mapping vectors of UDPpacket to the language (would
need to copy to/from hidden buffers, as the language does not support
packed vectors of scalar objects).
  The other exceptions are that tcp.Recv and udp.Recv will resize
the argument to match the number of bytes received, following the
pattern of other string/vector interfaces, and the tcp.Send and
udp.Send do not receive a length argument, but just writes the full
string/vector argument to the socket.

  A simple extra test was added to check/sdl that is basically
a port of SDL2_net/showinterfaces.c and the new examples/tests
check/chatd and check/chat are ports of SDL2_net/chat{,d}.{c,cpp,h}
without a gui interface.