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

Also includes some partial support for uploading blocks.

Review guide:
- server/client protocol is defined in protocol.scala

note to self: we probably need to retain the buffer somehow ... otherwise it could get recycled by another thread