[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.
This is mainly because you can instantiate case classes without the `new` keyword. In fact this is how we instantiate this particular class in this file. Adding a new constructor means we need to use the `new` keyword to instantiate it, and I believe many users of case classes don't actually do that.

Yeah I'll add the guard against empty string.