Added ability to keep orginal value type in custom validation methods

When trying to use a custom validation method on a non-string type,
validator would try to force the type to a string, which made
validation checking on non-string types very difficult. This adds
the ability to pass an option called: "keepOriginalValue: true" (just
like passIfEmpty) and this will not force "this.str" inside custom
validation functions to a string, but leave it untouched.