[Validator] Do URL validation according to RFC's

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | no
| Fixed tickets | #10467
| License       | MIT
| Doc PR        | -

**This PR is still very rough but I just want to throw it out there so people can comment etc.**

This PR makes the URL validator RFC aware and more configurable (question should it be more configurable?). 

The idea is that we take RFC3986 as a base for the validator and let people configure it according to there needs.
I was mainly thinking of not allowing ip addresses or using custom host name constraints based on different RFC's.

One of the main problems with the new implementation is that none of the RFC's (as far as i can see) allow UTF-8 characters in the host name and this gives some trouble with this current tests. (aka IDN domains).

P.S. the RFC3986 regex can be found at https://gist.github.com/boekkooi/d24fcee6f7082e802ce1/revisions (this is not a full regex since i didn't implement `hier-part` fully)

if you are expecting to pass a list of schemes rather than a list of scheme regexes (which would be weird actually as expecting a single regex would then be simpler), you need to escape them before putting them in the regex