[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.
Ah, just saw the comment from your earlier discussion with @dgshep on one of the earlier commits.  Yeah, I see now that `exists` isn't a loop.  Feel free to ignore this comment unless you think my version is more readable.