[spark-4691][shuffle]code optimization for judgement

In HashShuffleReader.scala and HashShuffleWriter.scala, no need to judge "dep.aggregator.isEmpty" again as this is judged by "dep.aggregator.isDefined"

In SortShuffleWriter.scala, "dep.aggregator.isEmpty"  is better than "!dep.aggregator.isDefined" ?


"if(dep.aggregator.isDefined) else if (dep.aggregator.isEmpty)"  seems duplicate. 
isEmpty == !isDefined
We need to do another one more judgement for "dep.aggregator.isEmpty".