When writing to a non-seekable .NET Stream (like a network/socket stream), ArrowStreamWriter will throw an exception:
The reason this throws is because we are using `BastStream.Position` in the writer to calculate the length of bytes that we've written to the stream. We don't need to use the Position in order to calculate the lengths. We should be able to write an Arrow RecordBatch to a NetworkStream directly. Today, we need to write to a MemoryStream, and then copy the MemoryStream to the NetworkStream.