Add data structures and functions to represent and manipulate RRs

Adds a structure that, using unions represents all supported RRs. Add a
bunch of utility functions that can be used to create these structures.

Currently the functions are unused.
rwrap: Use the rwrap_fake_rr structure instead of raw uint8_t pointers

Currently only one instance of the rwrap_fake_rr structure is used. Recursion
will be implemented in a future patch.
rwrap: SRV record can recurse into A or AAAA
rwrap: CNAME record can recurse into A, AAAA or CNAME
rwrap: Make the rwrap_fake_* functions only fake RRs

The rwrap_fake_common() function did too much. Remove it and use
separate functions to add fake header and question sections. The
rwrap_fake_$RR functions will receive packet including the header and
question and only add its RR data.

This will allow recursive processing later.
rwrap: Recursively add additional data, add tests
rwrap: Support asking for A via CNAME