vcf: Output "." not "nan" in scalar INFO fields
vcf: separate header lookup from field getter

Create two alternatives to bcf_get_info and bcf_get_fmt allowing the
user to query the header id for the tag once and then accessing the
fields directly using index lookups.  Modified the two existing
functions to use the index lookups so we don't repeat functionality.

Added the following functions to the public API:
```c
bcf_get_fmt_idx (bcf_t* line, const int idx)
bcf_get_info (bcf_t* line, const int idx)
```
Add macro for accessing the readers' headers
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