Do not refuse request, rather return truncate true.

This will cause resolvers to try again via TCP.
Add some documentation
Correct the expected return signature
Give those empty lists a name so its easier to see what’s empty
Only restart the delegated query if NS is a parent of the matched record

For example, given:

bar.example.com NS ns1.bar.example.com
foo.bar.example.com A 1.2.3.4
baz.example.com A 5.6.7.8

In this case a query for foo.bar.example.com should result
in a delegation to ns1.bar.example.com since foo.bar.example.com
is a child of the bar.example.com zone.

On the other hand, a query for baz.example.com should return
the A record since it is a sibling to the delegated zone, not
a child of the delegated zone.
Switch to Cowboy 1.0.0.

Requires the cowlib app to be started.
Change extension.
Update copyright date.
Clean up whitespace.