WIP: validation message generalizations

@talbs I have these code changes (which are not close to being ready for code review!) on my sandbox. Here is a test course you can use (staff@example.com):

http://studio.cahrens.m.sandbox.edx.org/course/brian/brian/brian

I wrote up several questions and thoughts in https://openedx.atlassian.net/browse/TNL-704

There are also some comments directly in component-validation-messages.underscore
Don't implement your own setters. Just expect that the caller will set the attribute (or pass it in the constructor). If you later need to add logic when setting a value, then you can replace the basic attribute with a `property` with getter and setter functions.