Validation messages 2

This is a more reasonable version of #1010 . It only:

- Allows custom `message: "some string"`
- Allows `message: (attr, messageKey) ->  ` with record as `@`
- Moves validation API to its own file
- Moves Validator, ValidationError and ErrorsSet to App Internals section

No more of that looking up by resourceName and attribute name, but the custom message function API allows you to do it yourself if you really need it. It was just ... too yucky ...