enable QualitySim and QualityReader to operate on results stored in memory

This pull request addresses issue #2. Essentially, in its current form, `QualitySim` must deal with `File` objects. This pull request allows it to deal with arbitrary `DataInput` objects so that results can be dealt with in memory.