New FILTER_VALIDATE_DOMAIN and better RFC conformance for FILTER_VALIDATE_URL

Introduce a new `FILTER_VALIDATE_DOMAIN` filter to validate domain name and label lengths according to RFCs. It does not check characters.
A `FILTER_FLAG_HOSTNAME` is also available to specifically validate hostnames (they must start with an alphanumeric character and contains only `[a-z-]`). This flag is used in `FILTER_VALIDATE_URL`.

- [x] According to [RFC 1034](https://www.ietf.org/rfc/rfc1034.txt), a domain name label cannot exceed 63 characters
- [x] According to [RFC 1035](http://www.ietf.org/rfc/rfc1035.txt) the total length of a hostname cannot exceed [253 characters](http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx) (optional final dot not included)
- [x] According to [RFC 952](http://www.ietf.org/rdc/rfc952.txt) and [RFC 1123](http://www.ietf.org/rfc/rfc1123.txt) a domain name label cannot start nor end with a non alphanumeric char (the current implementation only check the first character of the hostname)
- [x] According to [RFC 2732](https://www.ietf.org/rfc/rfc2732.txt) an IPv6 address enclosed with square brackets is a valid host
- [x] According to [RFC 2181](https://www.ietf.org/rfc/rfc2181.txt) and [RFC 1123](https://www.ietf.org/rfc/rfc1123.txt) a domain can contain underscores but a hostname can't

See bug #68039
@datibbaw I'm ok to initialize `i` as `0` and move the increment operation before the check (it's your point right?) if it's already done like that in other part of the code base. Anyway, doing it like I've done avoids one unnecessary increment operation when the label is > 63 characters.

Number of `++ ` operation when label is 64 chars:
current implementation: 63
your suggestion: 64

It's really micro-optimization with no impact in real case, I know :)