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.
AIUI, this style is used to try to avoid the try / catch deopt, which I'm not sure makes any difference with recent V8s. Try both approaches with `%OptimizeFunctionOnNextCall` / ` and `node --trace_opt --trace_deopt --allow-natives-syntax` / IRHydra and see what difference, if any, there is?