Sort shuffle read improvements

Hi @sryza , I've done some improvements in current SortSHuffleRead, would you mind help reviewing this and give me some comments, thanks a lot!

1. copy memory shuffle block from off-heap to on-heap if memory is allocated with direct memory to control the off-heap memory size.
2. Some code style modification and better failure processing logic.
From my understanding, this two problems may both related to the unexpected behavior of ShuffleMemoryManage. I have no small reproducible unit test to address this issue. Though I think it's not the problem of SortShuffleReader, it's worthy to investigate it.