VariantBuilder code review round 2 update

-Addressed round 1 code review comments

-Enable move semantics when setting individual fields
 (allows for zero-copy bulk setting of a field for
 all samples at once)

-As a side effect of the above, setting individual fields
 by sample instead of in bulk is now supported. Uses
 short-value optimization to keep the per-sample values
 as contiguous as possible, but this option is still less
 efficient than setting in bulk.

-Significant refactoring to support the new move semantics
 and per-sample field setting:

    -split VariantBuilderDataField into VariantBuilderSharedField
     and VariantBuilderIndividualField

    -individual fields are now encoded at build time instead of
     at field set time; shared fields are still encoded upfront

    -to allow setting individual fields by nested vectors and
     by sample to compete with setting it by flattened vector,
     had to write a lot of low-level encoding routines to replace
     the former strategy of converting to flattened vector then
     handing off to htslib

Remaining TODOs:

-Fix issues with float missing/end of vector values (these are
 proving very problematic)

-Build-by-merge support (Joel indicated that this would be helpful
 for his use case, after all)

-More tests (now that Coveralls is working again, I can see the
 coverage gaps clearly)

-Doxygen comments / documentation