Takes array of SAM headers as an input.
The main result of merging -- new SamHeader
the same for program record identifiers
the same for read group identifiers
Map: index of SamHeader in input array of headers -> old refID -> new refID
Map: index of SamHeader in input array of headers -> new refID -> old refID
Class encapsulating functionality of merging several SAM headers into one. (In fact, its role is to just group several variables, so it could be replaced by a function returning a struct.)