Create less IO errors to improve efficiency of require

In some environment (especially when coffescript is involved) module.js
will spend a lot of time looking up nonexisting files. This is caused by the
lengthy error creation. Those errors are then immediately caught.

This change makes the lookup much faster, by avoiding the unnecessary error
creation.

module::statPath now uses the new second parameter of fs.statSync function of the
fs.js. There is a similar change for the fs.stat, adding the third parameter.
Also, I'd like it if we start _properly_ documenting optional arguments. e.g.:
```
## fs.stat(path, callback[, throw_safe])
```
I've been having the urge to go through all the documentation an change this. Drives me nuts.