Remove unused source files
Clean *.dSYM in plugins subdirectory

These are always created (on OS X) due to -g (from $(CFLAGS)) being
given to the linker by the .c -> .so all-in-one rule.

Avoid using "rm -r" when it is unnecessary.
merge: Support for merge by ID
Comments
More comments
Merge procedure modified:
Pre-process individual files to
a. Move fields from INFO to FORMAT (per sample)
b. Drop un-necessary fields
Debug
1. Changed to -O3 flag in Makefile by default
2. Use processed_header in vcfmerge
Fixed memory leak in move_info_to_format
Added code for merge configuration file directives
bcf_hdr_merge now has force_samples argument
1. Debugged merge_config
2. Added sample config.sample for merge
vcfmerge works with gVCFs now. Needed a modification to synced_reader in
htslib.
Main idea: before merge_buffer fully kicks in, check whether the
intervals need to be split and aligned to a minimum end position. The
minimum is computed by the function find_end_position and alignment to
the end is performed by align_to_end. This process produces new
intervals. Through a tricky manipulation of reader->nbuffer and
reader->last_valid_record_idx, intervals are merged successfully.

FIXME:
1. The terrible hack that is is_split_record. Needs to go away as soon
as I figure out how to obtain base from reference given position
2. shake_buffer around line 1708, unsure what to do
Added support to read reference file to obtain reference base when
intervals are split while merging gvcfs
1. Modified vcfmerge to use m_end_point in bcf1_t struct instead of
accessing INFO field everytime.
2. Eliminated using update_info and update_allele in merge_buffer and
shake_buffer.
3. Avoid using duplicates when doing merge.Together with point (1), saves
20-25% of the execution time.
4. Modified shake_buffer for a cleaner implementation. FIXME: likely can
be made to run faster.
5. Stat collection mechanism added
1. Avoid using kh_get_strdict in merge_info and merge_format. Instead
maintain a big indexing structure from ids of individual files to merged
ids (and back). Also, maintain a map between merged id and index of the
field in the merged line. This saves around 11% of execution time.
2. For shake_buffer, handle common case efficiently. This saves 3% of
execution time.
1. Added support for handling NON_REF in gVCFs whenever fields of length
BCF_VL_A,BCF_VL_A or BCF_VL_R are included
2. Match GATK merge as closely as possible
  a. DROP fields as described in config.sample
  b. Merge INFO fields as listed in cmd.sh
3. Avoid duplications in preprocess_line completely
4. Use idmap instead of string search for info_rules
Special handling of DP info field
In merge, if one sample contains a DP INFO field, then compute sum of DP
values from all input values and store in INFO field. Sum is done as
follows:
if input.INFO[DP].exists
  sum += input.INFO[DP];
elif input.FORMAT[MIN_DP] exists
  sum += input.FORMAT[MIN_DP];
elif input.FORMAT[DP] exists
  sum += input.FORMAT[DP];
Ensure that NON_REF is always the last allele during merging
1. Fixed the keep/deletion of GQ format field - with --gatk argument
kept when dealing with ref intervals, dropped when actual variant seen
2. Added vcfdiff function