fs: fix fs.readFileSync fd leak when get RangeError

The `new Buffer(size)` will throw RangeError when size grater than 1GB. Need close the fd here.
Any reason not to use `catch` instead, a la:

```javascript
try {
  buffer = new Buffer(size);
} catch(err) {
  fs.closeSync(fd);
  return;
}
```

to avoid the extra variable?