Make DNS label validation logic clearer (#5763)
Make DNS label validation logic clearer (#5763)

Implement our label validation logic directly as specified in the
relevant RFCs: P-Labels are a subset of XN-Labels which are a
subset of Reserved LDH Labels which are a subset of LDH Labels.

This approach allows us to much more clearly document what each
check is doing, to remove two regular expressions, and to simplify
one additional regex.

Fixes https://github.com/letsencrypt/dev-misc-tickets/issues/247
jcjones/boulder,letsencrypt/boulder,letsencrypt/boulder,jsha/boulder,jcjones/boulder,jcjones/boulder,jsha/boulder,letsencrypt/boulder,jsha/boulder,jcjones/boulder