A validator for one Block.
The intended usage is that you wrap the Block in a validator, then call validation functions on it
until you’ve validated all the possible legitimate contents of the Block, and then the Validator
will warn the user about anything left over when it goes out of scope. This way you don’t have to worry
about checking for unknown fields yourself.