util: more strict type check for bool/number/string

See below code first: 
```javascript
var util = require('util');
var num = new Number(10);
util.isNumber(num);  // false, because typeof num is an object
```
Like above what I annotated, the result of `typeof num` is `object`, so we need a more stringent way, that using `Object.prototype.toString.call()` to fix these bugs, yep, same problems in `isBoolean` and `isString` would be fixed, too.