[SPARK-4714][CORE]: Check block have removed or not after got info lock in dropFromMemory

[SPARK-4714][CORE]: Check block have removed or not after got info lock in dropFromMemory

After got info lock in one of them: `removeBlock`/`dropOldBlocks`/`dropFromMemory` method in BlockManager, the block that `info` represented may have already removed.

The Three method have the same logic to got info lock:
```
   info = blockInfo.get(id)
   if (info != null) {
     info.synchronized {
       do sth
     } 
   }
```

So it is chanced that when one thread got `info.synchronized`  but it already removed from other threads who got `info.synchronized` before him.

In `removeBlock` and `dropOldBlocks` is idempotent if they not have `blockinfo.get(blockId) != null`
But in `dropFromMemory` it may be problematic for it may drop block data(which already removed) into diskstore, this method calls data store operations that should not handle missing blocks.