only parse ms if it's a string

Currently, if you call `timeout` with a numeric value, you can incorrect behavior:

```javascript
function *task() { ... }

var result = timeout(1000, task);
// times out after 1 millisecond
```

This is because calling `ms()` with a number returns the string version, and `ms(1000) == '1s'`, which when passed to `setTimeout` just gets parsed which returns 1.