[SPARK-3135] Avoid extra mem copy in TorrentBroadcast via ByteArrayChunkOutputStream

This also enables supporting broadcast variables larger than 2G.
nit: can we move this later in the class definition? Just from a "reading-the-code" standpoint, it shouldn't be first. Probably last.