added topleveldomain guesser

added a topleveldomain guesser to map tlds to a locale.
f.e:
domain.ch will map to locale de_CH

this is usefull for sites with more than one tld to provide a default locale per tld.

mappings can be influenced via config.
what happens in the case getHost has no `.` in it? like `localhost`? do we need a santiy check here to silently skip this guesser? could getHost ever return null during testing or is it guaranteed to be a (possibly empty) string?