(GUI)Launcher can only be used once

we have to create a new launcher for the 2nd launch
use os.path.join() rather than joining manually
allow adding non-arrays to OSC-messages
test for launching on the SMi
allow passing strings as OSC-data

strings are iterable, but will produce an array of characters.
so if the user passes a string as dataArray, we first convert it into
an array of a single (string) atom
send launch-state as part of the "/ping" reply
SMi now sends continuous updates of launch state
added OSC.CallbackManager.remove()

as a shortcut to OSC.CallbackManager.add(None,...)
OSCException class

actually a dummy class, derived from Exception
pattern matching

stolen from python-txosc
moved SMi code into MINT module
moved all network stuff into 'net/' subdirectory
fixing syntax errors
no more MINT.constants for MINT.net

try making submodules self-contained
automatch ZeroConf-Name and OSC-prefix

it's a bit harder now that we don't have constants, so we do magic:
ServerUDP removes the leading '/'s and registers the name with ZeroConf;
just in case this didn't fully work, the gui/SM removes all leading slashes
but one (which is eventually added!) to the send-name
match imports to new module layout
tell NetServer which oscprefix to use

since NetServer doesn't do that automatically any more
SLIP encoder/decoder class
first implementation of a TCP-Server for OSC

using SLIP as the underlying protocol
less verbose; move test functions and class into main block