Remove unneeded cast

This cast mainly served only to suppress compiler diagnostics for
various coding mistakes.
Don't #include bgzf.h from other htslib headers

Instead hts.h provides an incomplete struct BGZF and BGZF typedef,
which is used by sam.h, tbx.h, and vcf.h.

Avoiding including bgzf.h and therefore zlib.h saves compiling about
3000 lines in each client source file, and more importantly makes bgzf.h
more of an internal header.
Change *_itr_next() to take htsFile*, not BGZF*

These functions should take a high-level htsFile parameter, especially
bam_itr_next() as when eventually used with a CRAM file there won't be
an underlying BGZF.

The tabix version is sometimes used with an actual BGZF* obtained via
bgzf_open(), so there are now two versions: tbx_itr_next(htsFile*, ...)
and tbx_bgzf_itr_next(BGZF*, ...).
Replace "void *fp" by a union of the file pointers

With a void* here, casts are needed just about anywhere the file pointer
is used in the code.  These casts prevent compiler diagnostics for various
coding mistakes, leading to harder to debug crashes at runtime instead.
Fix -Wc++-compat warning / C++ compilation error

There's no need for client code to know the size of this array,
and in fact it could be added to in future.
Use hFILE instead of stdio for uncompressed output
Add bgzf_raw_read() and bgzf_raw_write()

These are used by bam_cat.c and bam_reheader.c to bulk copy BAM files
without decompressing and recompressing them.
Merge branch 'io' into develop

Replace "void *fp" by a union of the file pointers.
Change *_itr_next() to take htsFile*, not BGZF*.
Use hFILE instead of stdio for uncompressed output.
Add bgzf_raw_read() and bgzf_raw_write().