dns: introduce lookupService function

Uses getnameinfo to resolve an address an port into a hostname and
service.

NOTE: latest libuv needs to be pulled into node before merging this.

Does what it says on the tin. I'm not thrilled about the `lookupService` name, suggestions are welcome :-)

Suggested reviewer: @indutny, but all feedback is of course welcome!
Use reinterpret_cast for casts (and you don't usually have to prefix with struct in C++).

Also, if you're going to abort on failure anyway, then CHECK() or CHECK_EQ() / CHECK_NE() is more concise.