[SPARK-4759] Fix driver hanging from coalescing partitions

The driver hangs sometimes when we coalesce RDD partitions. See JIRA for more details and reproduction.

This is because our use of empty string as default preferred location in `CoalescedRDDPartition` causes the `TaskSetManager` to schedule the corresponding task on host `""` (empty string). The intended semantics here, however, is that the partition does not have a preferred location, and the TSM should schedule the corresponding task accordingly.
Is this for backwards-compatibility?  Can you have a case class with multiple constructors?  If so, it might be nice to just add this to the `PartitionGroup` class as a secondary constructor.

Also, what do you think about adding a `require(prefLoc != "")` to guard against code that uses the old empty string technique?