Multi sample refactor

See https://jira.gsc.wustl.edu/browse/AT-560.

This PR makes it so that available_fields_dict in Reporter::WithHeader gets the list of interpreters from the reporter object itself instead of a 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.

This PR might conflict with https://github.com/genome/genome/pull/135 in places.