dns.hpp: fix incorrect DNSResolver.request() return value

After c59571685099, DNSResolver.request() returned a DNSRequest&&
using std::move(). This was wrong, because the underlying state was
destroyed when the stack was unwinded, so the actually returned
request contained a NULL state. As a consequence, no callback was
called when the response was received, and all tests failed.

This leads me to explaining why I assumed that the problem was
caused by libevent rather than by c59571685099, as I wrote when I
closed pull request #41 on github.

Basically, when the test failed I throwed a runtime_error to exit
libevent's event loop. The problem with this approach is that the
event loop is not properly exited. Therefore, when next tests run,
libevent failed to enter the event loop because another loop was
already running (libevent has no knowledge of exceptions).

This explains the libevent warning messages, and explains why I
believed the problem was related to libevent on different platforms.

Our poller can probably be improved such that it catches exceptions
around libevent's event loop and such that libevent's event loop
is properly exited in such case?

Returning to this commit, after I fixed the above bug I also needed
to tweak tests checking for specific IPv6 addresses, since they
were represented differently by different platforms.

Moreover, I also needed to rewrote the test checking that if the
resolver dies request are aborted, because after c59571685099 it
was simpler to check that using the heap rather than stack unwinding.

Finally, also the commented out last test was changed because it
was used to debug what was going on.