Travis: run tests in release mode in master only

create a new *production* mode to eliminate the -finline-functions that
is no longer supported by clang 3.5

also create a global fixture for initialization of global variables in
the variant reader test.

closes #290
Merge pull request #291 from broadinstitute/mc_relase_mode_testing

Travis: run tests in release mode in master only
Fix handling of vector end values by Genotype::operator[]

Vector end values were not passing through to the caller
when accessing alleles via operator[] in the Genotype class.
Merge pull request #302 from broadinstitute/dr_fix_genotype_handling_of_vector_end

Fix handling of vector end values by Genotype::operator[]
Add sample_index to VariantHeader (analogous to field_index)
Merge pull request #304 from broadinstitute/jt_vh_sample_index

Add sample_index to VariantHeader (analogous to field_index)
Remove ycm extra configuration files
forgotten case
Merge pull request #312 from broadinstitute/ak_fix_samples_to_include_in_variant_reader

fix for forgotten list of samples to include
Merge pull request #309 from broadinstitute/mc_remove_ycm_files

Remove ycm extra configuration files
Read group class

Read group class

Minor changes base don code review

Minor improvements in code readabiity
Merge pull request #294 from broadinstitute/db_read_groups

ReadGroup class along with some support in SamHeader.
ignore emacs temporary files
Merge pull request #313 from broadinstitute/ak_ignore_emacs_temporaries

ignore emacs temporary files
1. Modified SharedFieldIterator and IndividualFieldValueIterator to
handle bcf_*_vector_end values. This is done by passing the end value of
the pointer in the constructor and modifying the increment operators.

(a) Operators ++ and += advance to the end of the vector if the value at
the new iterator location is equal to bcf_*_vector_end.
(b) Operator == is same as the original
(c) Operators -- and -= unchanged

2. Inserted test cases for variable length vectors

3. Cache current pointee value in SharedIterator and
IndividualFieldValueIterator to reduce overhead

4. Use constructor with full parameter list in iterators

5. Operator[] in SharedFieldIterator, IndividualFieldIterator and IndividualFieldValueIterator works relative to m_current_data_ptr now

6. Added tests for operator[] for SharedFieldIterator, IndividualFieldIterator and IndividualFieldValueIterator
Merge pull request #287 from broadinstitute/intel_vector_end

Handle bcf_*_vector_end in iterators SharedFieldIterator and IndividualFieldValueIterator
Store all variant headers and also combine them for an overall header
1. Modified operator == in IndividualFieldValue to use iterators which
take care of bcf_*_vector_end values implicitly
A more serious bug in the previous implementation of the == operator was
in the way string fields were handled. Points to remember for string
fields:
a. The size() function returns the number of characters allocated for the string.
b. The variable m_num_bytes also stores the number of characters
allocated for the string (same as size())
c. When operator[i] is called for string fields, the address that is
accessed is m_format_ptr->p + i*m_num_bytes (not m_format_ptr->p + i).
The address accessed is outside the original allocated memory.

Moral of the story: use iterators always, or remember the intricacies of
string v/s other types of fields.

Similar fix for SharedField also

2. Use references to avoid copies where possible as per David's
suggestions
3. Specialized operator[] for IndividualFieldValue<string> and
SharedField<string> so that if the original VCF field type is of type
String, the index argument for operator [] cannot be greater than 0. If
it is greater than 0, then an out_of_range exception is thrown.

3. Added extra out of bounds test cases (by catching exceptions)

4. Fixed a memory leak in file_utils.h