file_open :: fn (filename: string, modes: ...FileOpenMode) File
Open an existing file or create new one. Call of file_close is required after file is
is no longer needed. This function can return
null file handle when file is not found
or cannot be open.
filenameFile name on disk.
modesFile open modes can be passed here in any order.
File handle or null.
Signature of this procedure will be changed in the future to indicate possible errors back to caller (most likely it will take out_file as an parameter and return non-zero number on fail).