Description
Right now, if the parser backtracks to a position p and then begins parsing text there again, even if the encoding is the same, a new DFDLCharReader will be created there at position p for the next parse.
This is unnecessary and inefficient. Once you have decoded a character at position p for encoding e, there's no reason to ever repeat that.
We could cache the DFDLCharReader instances, and just reuse them on backtracking if the position and encoding are matching.