Construct HTS_IDX_REST and HTS_IDX_NONE iterators without an index

These iterators never need to seek within the file, so can be
constructed even without loading/creating an index.  This means
unindexed streaming loops can be written via the iterator APIs,
simplifying programs that can process either whole files or regions.

Also implement these two special tids for CRAM files.  HTS_IDX_START
and HTS_IDX_NOCOOR remain unimplemented for CRAM and now abort if used.
Propagate error from bcf_hdr_printf