Introduce validation method and class in XBlock API

@cpennington and @dmitchell please review

You can see the Studio extension of the Validation class in common/lib/xmodule/xmodule/validation.py in https://github.com/edx/edx-platform/pull/5710 (which is still WIP so is not yet commented or tested).
What should I do in the case of a subclass of Validation being added to a Validation object? For instance, a StudioValidation object being added to a plain old Validation. I think I would like to make sure that + returns a StudioValidation instance, but implementing that seems messy (from what I've ready, I'd have to throw NotImplemented here, and implement __add__ and __radd__ on StudioValidation).