[SPARK-3453] [WIP] Refactor Netty module to use BlockTransferService interface

Also includes some partial support for uploading blocks. Will finish this and then remove the WIP tag.

Review guide:
- server/client protocol is defined in protocol.scala
- please look closely at ShuffleBlockFetcherIterator, in particular, parts related to reference counting and cleanup of buffers

do we need to call data.retain() here?