Only perform wildcard queries when there are no answers

All answers are guaranteed to be processed because the WaitGroup won't be released until the answers channel is clear.
No need to query for SOA records every time
Move the WaitGroup.Done() call into a defer for cleanliness
Merge pull request #24 from duedil-ltd/fix/query-optimizations

Query optimizations