Extend y-websocket provider to support sub docs synchronization in one websocket connection

The native implementation of y-websocket only supports one doc in a room, when nests sub documents in one doc, you have to start a websocket connection for each sub document, this can be not acceptable if you have a server, there can be too many connections in the same time. So, I extend y-websocket, adding doc guid (main document or sub document) into the sync message, then other clients or servers can fetch the right doc to update when receive an message.

here is my implementation (see multidoc branch):
y-multidoc-websocket

client use as follows:

const mainDoc = new Y.Doc()
const provider = new WebsocketProvider(host, roomname, mainDoc)

mainDoc.on('subdocs', ({added, removed, loaded}) => {
  loaded.forEach(subdoc => {
    provider.addSubdoc(subdoc) 
  })
})

const subDoc = mainDoc.get('sub')
subDoc.load()

// after sync finished, you can fetch data out of the sub document