timers: force timeout to signed int in enroll()

Closes #8618
+1 for using util.isNumber
+1 for throwing on negative and not finite values, although I think RangeError would be more appropriate in that case (so it would need two separate checks).