Avoid variadic open

GHC's LLVM backend doesn't properly handle multiple foreign imports of
the same C function with different argument counts; only a declaration
for the last one is emitted, and thus openRead fails to compile with
"error: not enough parameters specified for call".  Since the mode
argument is ignored if O_CREAT is not in the flags, it is safe to just
pass it anyway.