The spec as written make repeated references to TCP sessions where it is intended that MQTT should also flow over websockets and TLS. While these have a TCP layer underneath them, there may be other transport layers that implementations wish to utilise which do not use TCP. We should change references to TCP sessions to something more abstract, and specify that transport layers must be stateful and maintain data order.