Fix for #74. Bad metadata selection in gap filling
When the entire request is a gap, the code picked any channel that had the same base name to generate the metadata. This change:
- updates the downselect code to constrain the choices by channel type (as far as has been specified)
- breaks some of the filtering code out of downselect to its own method in the channel_selector to increase readability.