SplitReader now uses inherited reads

Instead of managing read logic inside SplitReader, this patch delegates
that work to the FileClass. A thin wrapper around those methods are
provided to continue to allow us to hotswap files when possible. This
was done to circumvent edge cases in following the file-like object
spec.