Constraints are now constructors, so they can be initialized before being run.
This is useful for pattern, which sets up the regexp.
Implemented case insensitive flag for the pattern, and made it work similar to the jsr303 spec (must match entire string, not a portion of it)