Make BufferedReader more realistic and break fixes

riccieri came up with a very clever solution, but it was exploiting
weaknesses in my fake BufferedReader implementation.