Large refactoring for merging errors.

Added "error" validator that will always fail and add an error message (useful for function validators).

Function validators must now return a prove instance (before it would be cast).