Specify Time out type (as Seconds)

Just to make sure that the API is quickly understandable by reading the
funtion signature.
Introduce FQDN and FQDNEncoded types

FQDNEncoded:
* this is a FQDN compatible encoded queries
* there is no warranty that this is a valide FQDN (no size checking for
  example)

FQDN:
* could only be build with validateFQDN with a FQDNEncoded
* also provide an unsafe methode to build a FQDN in case we want to
  force the FQDN creation without any security checking.
* the Client's functions will always validate the FQDN