Move cram_seek() from cram_index.c to cram_io.c

Now all direct access to cram_fd::fp is within cram_io.c.
Use hFILE underneath cram_fd, and add cram_dopen()

For compatibility with the non-htslib CRAM codebase, cram_structs.h
declares a cram_FILE which underlies cram_fd and may be either hFILE
or stdio's FILE.
hts_open(fname, "r") detects format by peeking at the input

The file format mode letters (especially "b", "c", but also "z" and "u")
are now ignored by hts_open() when opening files for reading.  Instead
the file format is determined by peeking at the underlying hFILE.

The supplied mode is now used as the mode argument of all hopen(),
bgzf_open(), cram_open(), etc calls inside hts_open(), so additional
mode letters understood by the latter are propagated to them.
Merge branch 'io' into develop