Relax ProductReader to accept all token characters

This is just the #878 change cherry-picked over to a 2.2 based branch.