dns: throw if lookup() hostname is not string or null

Current behavior is C++ assertion failure. Closes #8187
I can make the change to allow `undefined` to work, but `false` will still throw.

```
> var hostname = false; if (typeof hostname !== 'string' && hostname != null) console.log('throws');
throws
```