Refactor CompositeRecordReader to only make a record reader when necessary

Following Raghu's comments on this PR https://github.com/kevinweil/elephant-bird/pull/398 this defers opening record readers until necesary
The reason we have to re-set key and value is that if there was a key and value set, we need to then push it all the way down if we get rid of the current record reader (something that doesn't happen when you only have one)