Adding dynamic options, so validations can be functions

I needed the ability to have validations that could change based on the current model. In my example, I needed a zip code regex where the regex changed based on the current country. 
Much like conditionals where an if statement can be passed in now with a function, any option passed in, thats not a conditional, will be abstracted into a property and then when called it will pass in the current model to that function. This gives you the ability to have validations and also messages dynamically generated if needed.