Refactoring of the multi sample interpreter system

See https://jira.gsc.wustl.edu/browse/AT-560.

This PR is to refactor the multi sample interpreter system so that we don't need to pass around sample names to calculate available fields. This code change makes it so that available_fields_dict in Reporter::WithHeader gets the list of interpreters from the reporter object itself instead of the static requires_interpreters function.

This has the effect that available_fields gets called on the interpreter object itself instead of the class so for many sample interpreters we don't need to pass along the sample names as a param, we can get it from the interpreter object directly.
Is this subroutine only used to set up test objects?  Maybe it should be a helper method in the tests rather than an additional api to the class