Because some functions are patched twice (like `os.rename()`),
stopping the patches in the same order they were started
can result in restoration of one of the patches.
For example:
```
fn = os.rename
# Patch nesting order: 1 then 2
os.rename = patch_1(fn)
os.rename = patch_2(patch_1(fn))
# Unpatch 1 then 2: A still-patched function is restored
os.rename = fn
os.rename = patch_1(fn)
# Unpatch 2 then 1: The original function is restored
os.rename = patch_1(fn)
os.rename = fn
```
Fixes#365