Validations can be attached to input items.

This revision has highlighted the fact that the ReadInputItem class must
be refactored as it has two reasons to change:

1. The prompt formatting is non-trivial and now depends on multiple
properties of the Read<T> object.

2. Input validation is non-trivial, and depends on the type of the value
being input and also validations specified by the user.

The class must be split into 3 - a class dealing with prompts, a class
dealing with input conversion and the ReadInputItem class itself.