Remove dynamically allocated fakeargv.

This used to be used to hold the original argv before quashing with -q.
Now that -q is gone, it was just a copy of argv.

fakeargv was also causing Valgrind to complain about leaked memory. it
wasn't a real leak, but now it's out of the report anyway.
Get rid of some struct typedefs.

C++ does this automatically. We don't need typedefs here, just some
forward declarations.
Use more automatic memory management in nmap_dns.cc.