Annotation validation

This enables common validation functions to be specified via annotations.  In particular, it provides built-in annotations `@Required` and `@Positive`.  But it also enables the user to register their own annotations and validation functions.   (Eventually we'll probably want to add more built-ins.)