fix#7693
The problem was when we gathered experiments, and at the same time,
the executor are creating new commits. It will make the checkpoint
top/head return by `get_running_exps`/`get_ref`/`branch_revs` not the
same one. And cause the problem described in #7693
To solve this we did
1. move the `get_rev` to the beginning of `exp show` to make sure the
return results in `branch_revs`
2. Add a new function to move all of the properties that only belong to
`head` of the checkpoint from the wrong place to the top.
3. Add a new unit test for it.
4. Force fetch_running_exp to return data.
5. fix a bug in tmp_dir_executor.