Exceptions: move all exceptions to exceptions.h

All gamgee specific exceptions should be declared in exceptions.h and
gamgee.h will extend it's visibility to all users of the library.

fixes #170
FormatFieldType: renamed to VariantFieldType

fixes #171
Merge pull request #205 from broadinstitute/mc_centralize_exceptions_170

Exceptions: move all exceptions to exceptions.h
Note about MVR result vector nondeterminism
Merge pull request #208 from broadinstitute/jt_mvr_nondeterminism

Note about MVR result vector nondeterminism
Merge pull request #203 from broadinstitute/mc_rename_format_field_type_171

FormatFieldType: renamed to VariantFieldType
Add MVR and IVR to gamgee.h
Add sample subsetting to MultipleVariantReader
- move VariantReader::init_samples() to variant_utils and rename
- refactor variant subset testing
- incomplete due to Issue #209
Add test for MultipleVariantReader GVCF and GBCF
Add a test for input files with different variants
- includes matching and non-matching records
- includes multiple records in a file at the same location
Travis
Merge pull request #210 from broadinstitute/jt_mvr_126

Updates and tests for MultipleVariantReader
Add helper functions for shared memory access to HTS files, indexes, and
iterators
Remove raw pointers from all Variant Readers and Iterators
- delete all copy constructors/assignment
- set all move constructors/assignment to default
- remove all nullptr assignments
Add move constructor/assignment tests for remaining Variant Readers and Iterators
Add explicit to constructors which can take a single argument
Refactored VariantReader initialization
Merge pull request #207 from broadinstitute/jt_raw_pointer_removal

Remove raw pointers from Variant Readers and Iterators
TestUtils: add copy/move operation test functions

Testing move and copy operations are something we do all the time and
it's not always trivial. It includes a lot of boiler plate code. These
two template functions take away the boiler plate and test the following
aspects of the copy and move operations:

* copy and move construction
* copy and move assignment
* check that self assignment doesn't destroy the object

The copy version returns all three copies made to test the functionality.

The move version returns the final moved to object. Note that the move
function will move from the parameter passed in, so that parameter
becomes unusable.

fixes #206