1. Modified vcf_parse to update rlen only when an END INFO tag is seen -
the END tag is NOT encoded into v->shared.s
2. Modified vcf_write to add END INFO tag if required:
Add END iff rlen != strlen(reference)
FIXME: what happens when rlen == strlen(reference)? Conditions for
adding END are unclear
Merge pull request #5 from broadinstitute/intel_remove_END

1. Modified vcf_parse to update rlen only when an END INFO tag is seen -
Direct access for INFO fields within bcf1_t.d.info array
Two options:
a. enable ENABLE_DIRECT_ACCESS_TO_FIELDS - the size of info array is set
to the maximum number of fields in the header. More precisely, it is set
to hdr->n[BCF_DT_ID]
b. enable ENABLE_DIRECT_ACCESS_TO_FIELDS and
USE_SEPARATE_INFO_POINTER_ARRAY - the size of info array is same as the
original htslib, however, a separate array of bcf_info_t* (array of
pointers) is created with size = hdr->[BCF_DT_ID]. Elements of this
array point to elements of info such that
m_info_idx_to_info_ptr[key]->key == key

a. Invalid INFO elements are identified by info[i].vptr == 0
b. bcf_get_info_idx() returns 0 if entry is deleted/does not exist
c. test-vcf-direct.c is a simple test program for both performance and
functional correctness
d. Hack for now: hdr->n[BCF_DT_ID] is passed to bcf1_t->d.m_num_indexes
using a separate function. Should be set inside bcf_read, vcf_parse etc
e. bcf_translate untested
1. Avoid the use bcf_initialize_for_direct access by calling
set_num_fields_in_decode in multiple places. This function should be
called before any operations dealing with bcf1_t->d.info are performed.
2. Better functional check in test-vcf-direct.c
Debugged bcf_translate for direct access
Set vcf-test-direct for speed test of bcf_get_info_idx