timers: force timeout to signed int in enroll()

Closes #8618
After giving it more thought, it seems that this test would throw on all invalid use cases:
```
if (!util.isNumber(msecs) || !isFinite(msecs) || msecs < 0)
  throw new TypeError('msecs must be a non-negative finite number');
```

Using `util.isNumber` makes it more consistent with the rest of the code base.

What do you think?