[SPARK-2650][SQL] Build column buffers in smaller batches

Maybe we can use the narrowest one instead of the 1st one by checking default sizes of columns:

```scala
val narrowest = relation.output.indices.minBy { i =>
  ColumnType(relation.output(i).dataType).defaultSize
}
Seq(narrowest)
```