[FEATURE] added SmartFile class to replace former BamStream/GffStream/SequenceStream

 * The new generic base class `SmartFile<TFormat, TDirection>` can be specialized with one representative Format Tag (`Fastq`, `Bam`, `Gff`) and a direction (`Input`, `Output`)
 * I provided shortcuts e.g. `BamFileIn`, `GffFileOut`, `SeqFileIn`

Additionally, I ported sam2matrix, samcat and all Bam/Gff tests to the new interface.