Add Optional and Many validations.

Our JSON API has some optional and array bits that need more validation than the existing validators can give. This PR adds:

* An Optional validation, which validates a value against another validation only if the value is given, and
* A Many validation, which validates each element of an array value against another validation

I'm not sure about the API to use these. Because they're higher-order validations, they work best as custom objects which take another validation in their initializer. I've added methods to `HashValidator` to make them easier to construct.

What do you think?