FileBuffer almost works.
seek/tell + pipes = at least we can see what the problem is now.
Simplify a bit before tackling this.
Refactoring's a bit like Sokoban sometimes.  (What do we need to move out of the way first?)
Hide immutability of Buffer from clients of Scanner.
It was a valiant attempt, but it runs up against a dead end.