Checks an entered value against a type, returning its problem, if any.

A literal is read again from its text and must come back unchanged. So a literal of another kind (e.g. after the column type changed), one out of the type's range, or one not in canonical form (e.g. from a hand-edited spec) is a problem too.