Implement DNS Request

This is the default type for a request:
* domain  : must be a valide domain
* command : any kind of bytestring (length <= 35)
* nonce   : any kind of bytestring (length <= 35)
* param   : any kind of bytestring

<encode32 param>.<encode32 nonce>.<encode32 command>.domain

the command and nonce size are limited to 35bytes in order to not
need an encoded size greater than 64 (35bytes needes 56bytes)

the param upper bound length depends of the command size and the nonce
size.

max param length = 255
                 - (1 + encoded nonce length)
                 - (1 + encoded command length)
                 - (1 + domain length)

For example, with a command of 10bytes, a nonce of 10bytes and a domain
of size 8bytes: max param length would be 130bytes.
* domain length = 8
* encoded command length = 16
* encoded nonce length = 16
* 255 - 43 = 212

we also may need to split the encoded param into node of size 63 and
intercalate a . (dot) to separate the nodes.

* needed nodes: 1 + (212 `div` 63) = 4
* 212 - 4 = 208
* guessEncodedLength 130 = 208