[SPARK-4323] Utils#fetchFile method should close lock file certainly

In Utils#fetchFile method, lock file is created like as follows.


        val raf = new RandomAccessFile(lockFile, "rw")                                                                                                          
        // Only one executor entry.                                                                                                                             
        // The FileLock is only used to control synchronization for executors download file,                                                                    
        // it's always safe regardless of lock type (mandatory or advisory).                                                                                    
        val lock = raf.getChannel().lock()                                                                                                                      
        val cachedFile = new File(localDir, cachedFileName)                                                                                                     
        try {                                                                                                                                                   
          if (!cachedFile.exists()) {                                                                                                                           
            doFetchFile(url, localDir, cachedFileName, conf, securityMgr, hadoopConf)                                                                           
          }                                                                                                                                                     
        } finally {                                                                                                                                             
          lock.release()                                                                                                                                        
        }  

If some error occurs between opening RandomAccessFile and getting lock, lock file can be not closed.
This is the only statement after the lock acquisition. It doesn't throw anything (unless you want to be pedantic and say it can throw an `OutOfMemoryError`), so it shouldn't cause problems. But if you want to be pedantic, you could achieve the exact same behavior by moving this statement one like up (before the lock acquisition). Which is much simpler than your patch.