* core,presets,transports: add initial mux support
* core,presets: holy shit
* core,transports: fix fix
* core: some fix to multiplexer
* still not working, too complex
* transports: add mux
* core: pass "extraArgs" as the second parameter during piping
* src: first working version of mux
* core,presets: properly close sub connection from client
* core/multiplexer: fix stuck at the second connection
* core/multiplexer: split class into MuxClient and MuxServer
* core/multiplexer: pick a random mux relay to transfer encoded data on server side
* core,transports: remove "mux" transport and make mux on TLS work
* presets/tracker: only dump result when preset destroyed
* lint: fix
* core: bring preparePresets() to module scope
* transports/tcp: fix inbound destroy behaviour for mux
* utils: fix getRandomInt()
* core/multiplexer: fix getRandomMuxRelay()
* core/multiplexer: distinguish relay self-close and protocol(mux)-close
* test: add test for "mux"
* transports/websocket: prevent calling "on()" on null this._socket
* presets: add class IPresetAddressing
* core: wrap mux protocol inside custom protocol stack
* core: pass remoteInfo to new Relay() to correct remote address in log
* core: fix bugs and improve stability
* src: add/remove TODOs
* core/relay: store remoteInfo rather than context
* core/relay: fix a bug
* docs: update