The UTF-8 validation is very expensive. It's unclear if we ever need to do it at read time and if we do, let's do it when we know the value is actually going to be used. Speeds up read_value() a lot.