generic_iterators: refactor MergeIterator for whole-block-copy optimization
generic_iterators: refactor MergeIterator for whole-block-copy optimization

This patch refactors MergeIterator::MaterializeBlock in preparation for the
whole-block-copy optimization. Specifically, the "copy next row" and
"advance iter and rebalance heaps" operations have been decomposed into
standalone functions so that it'll be easier to add "copy whole block" as
an equivalent function in the future.

Also of note: we no longer set the entire client selection vector up front,
as this won't necessarily be the case when we copy a block.

Change-Id: I050116edc51bb3e91852e6286c221175770e6382
Reviewed-on: http://gerrit.cloudera.org:8080/13010
Reviewed-by: Mike Percy <e07a1fd797b473a9c849e618aa2ce06d8055760b@apache.org>
Tested-by: Adar Dembo <866ca730bfc7f544e3ebce604ceeba4879f23df0@cloudera.com>

InspurUSA/kudu,helifu/kudu,helifu/kudu,helifu/kudu,helifu/kudu,InspurUSA/kudu,InspurUSA/kudu,helifu/kudu,InspurUSA/kudu,helifu/kudu,InspurUSA/kudu,helifu/kudu,InspurUSA/kudu,InspurUSA/kudu,InspurUSA/kudu,helifu/kudu,InspurUSA/kudu,helifu/kudu