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

Current behavior is C++ assertion failure. Closes #8187
@cjihrig In that case I would change the check to be:
```javascript
if (typeof hostname !== 'string' && !hostname) {
```
That should cover all false-y values. Mind making this change and adding the false-y values to `test/simple/test-dns.js` to make sure they don't throw?

@bnoordhuis This will even cover the strange, but previously supported, cases of `NaN` and `''`.