Class X2ModelForeignKeyValidator

Miscellaneous additions to CValidator including option to have errors
reported in the form of exceptions. Certain bad inputs will not occur during
normal form submission and indicate either a programming error a malicious
request. In either of these cases it makes sense to throw an exception instead
of adding errors to the model.