refactor output of vcf-merge

we were already paying the virtual call overhead of boost::function
when writing output, but we were still testing an optional pointer for
each entry.