function splitContainers(buffer) {
  let decoder = new Decoder(buffer),
    chunks = [],
    startOffset = 0
  while (!decoder.done) {
    decodeContainerHeader(decoder, false)
    chunks.push(buffer.subarray(startOffset, decoder.offset))
    startOffset = decoder.offset
  }
  return chunks
}
Takes an Uint8Array that may contain multiple concatenated changes, and
returns an array of subarrays, each subarray containing one change.