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)
Verified that IndividualFieldValue::missing() is now working after Karthik's vector end changes

Turns out that IndividualFieldValue::missing() now works after Karthik's
changes to IndividualFieldValueIterator to skip vector end values.

Added a comment explaining why it now works, and also added tests to confirm
that it works.

I hope that I am starting a new tradition here of putting new Variant-related tests
in variant_test.cpp as small, independent test cases instead of adding to the
awful, monolithic, intertwined tests in variant_reader_test.cpp. VariantBuilder
should help a lot with constructing specific test cases (as it did here).

Resolves #305
Merge pull request #332 from broadinstitute/dr_fix_IndividualFieldValue_missing

Verified that IndividualFieldValue::missing() is now working after Karthik's vector end changes
A missing() function for the Variant class

Sometimes we need to distinguish blank, default-constructed Variant
objects from Variant objects with data. This change allows us to do so
via the standard gamgee::missing() convention.
Merge pull request #333 from broadinstitute/dr_variant_missing_function

A missing() function for the Variant class
First attempt at a CMAKE build system

now we can build gamgee and run tests. It all works on CLION!!!!
Address @nsubtil comments on code-review

* move find packages to root CMakeLists.txt
* swtich add->definitions to target_compile_definitions
* add variant builder files to the project
make library static