VariantBuilder: high-performance creation of Variant records

-Supports setting and removal of all fields in Variant
 records using a variety of inputs and calling strategies.

-Queues up tranformations to the record and applies them
 at build time so that the final data is encoded only once.

-Flexible API allows the user to choose their desired
 level of performance depending on how they are willing
 to prepare their data (eg., setting by pre-flattened
 vs. multi-dimensional vector, setting by move vs. copy,
 setting by indices instead of names, etc.)

-Storage layer designed to store many small values as
 contiguously as possible and with a minimum of new
 allocations/deallocations.

-Builder objects designed for re-use across records to
 avoid expensive re-creation of internal data structures.

-All validation can be disabled for a performance boost
 once confidence is gained in a program.

-Requires upfront a VariantHeader with all fields, contigs,
 and samples pre-declared.

Remaining TODOS (these will become tickets):

-Currently supports building Variants from scratch only;
 building from an existing Variant is needed to optimize
 for the case where only a few changes to a record are
 going to be made.

-Integration with existing Individual/Shared Field/FieldValue
 and Genotype classes.

-Fuller doxygen docs for the public API functions
Merge pull request #319 from broadinstitute/dr_variant_builder

VariantBuilder (for final review and merge)