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.
The code with finally is semantically different from the code with catch. The code with catch will not allow the error to bubble, whereas the code with finally will do so.