Fix parsing TXT records containing empty strings

I noticed empty character strings were being dropped by `dns.NewRR()`, for example `example. 0 IN TXT "a" "" "c"` in would become `example. 0 IN TXT "a" "c"`.
While adding a test for this I noticed the single-entry TXT parse length check wasn't checking the length so I fixed that and also changed the length constants for both existing TXT length checks to be defined as header size + rrdata size (thought it was a bit clearer).