mpileup: Support for cigar operation N
Rationalise include guard macro names

Add a HTSLIB_ prefix to avoid conflicting with user code.
Avoid using the __ prefix reserved for the compiler implementation.
Ensure installation directories are world-executable

As for installed files, create leaf installation directories
without regard to umask.  (However any parent directories created
via  mkdir -p  will still have umask applied.)
Added comments
Fixed bug : decrement n_info when removing INFO tag in bcf_update_info
Fixed bug : decrement n_fmt when removing FORMAT tag in bcf_update_format
Fixed bug : bcf_hdr_id2hrec_fixed added

Added debug flags in Makefile for use with gdb
1. Move elements of d.fmt array left when deleted in update_format()
2. -O3 in Makefile
1. Modified synced_bcf_reader to work with merges for gVCF files. Main
change - add a field in reader called last_valid_record_idx. This allows
vcfmerge to split intervals and add it to reader->buffer by manipulating
reader->nbuffer and reader->last_valid_record_idx
2. DEBUG flag in Makefile

TODO: FIXME
1. Terrible hack: Added boolean flag called is_split_record in bcf1_t
structure to determine whether a BCF record was created because of a
split in a gVCF interval. Used in a terribly hacky manner in vcfmerge.
Should be removed, once I have figured out how to obtain REF from
location.
2. When INFO and FORMAT fields are erased using update_info with NULL
arguments, I shift the elements of the info and fmt arrays and decrement
the values of n_info and n_fmt. Likely, we should set NULL pointers in
the deleted indices and not change n_info/fmt. This will be
faster;however, any applications using this must check for NULL
pointers as a proxy for deletion. Right now, vcfmerge does not work with
NULL pointers method, but works with the shifting method.
a. Fixed indentation
b. Incorporated Petr's changes for bcf1_sync
bcf_hdr_id2hrec  has been fixed in develop branch, so no need for
bcf_hdr_id2hrec_fixed.
1. Extracted the INFO field corresponding to END tag to bcf1_t
(m_end_point). This saves a significant amount of time while doing
merge operations.
2. Likely a bug fix - when update_info is called with NULL for values
and 0 for nvalue, the entry is marked as deleted (vptr = 0). However,
subsequent calls to get_info or get_info_values do not seem to check if
vptr is NULL.
3. Reverted update_info back to not editing n_info, but simply setting
vptr = 0.
4. FIXME: There is some kind of nasty memory bug when update_info is
called with NULL for values (i.e. INFO field is removed from bcf1_t). I
have not been able to find the bug as of now.
a. Added support for NON_REF variant used in gVCFs
b. Reverted to not changing number of fields in update_info and
update_format when a field is deleted
c. Fixed bugs in bcf_hdr_remove (nullify info, key, val fields)
d. Added a function to search for a key using simple linear search for
hdr->id[BCF_DT_ID][]. This is useful when there are 2 fields, one in
INFO and one in FORMAT with the same name (example, DP in the gVCFs).
See function bcf_hdr_field_name2id
e. Separated functions to directly update bcf_info_t and bcf_fmt_t. This
is useful when iterating over format and info fields for a line. No
string search needs to be performed (see functions
bcf_update_info_struct, bcf_update_format_struct and
bcf_unpack_info_values)
f. Added a function to set length descriptor (BCF_VL_*).
When bcf_clear is called, should reset vptr,p in decode structures so that
any subsequent search does not match any keys
Set variant type of reference allele to VCF_REF
Added bcf_unpack_format_values function