Refactor datafind.find_frametype function
This PR refactors the gwpy.io.datafind.find_frametype
function, which was a beastly monolith, and is now a little tamer. This also includes a few fixes for the following
- gracefully handle failing to read the channel list (TOC) from a GWF file (
RuntimeError
) - add Virgo types to ranking system
- some optimisations for reading cache files
This should have zero impact on users, other than hiding errors.