TST: added ensure_clean file cleanup context manager for file based test

avoids leaving temp files around if they are interrupted (during dev),
passes thru exceptions

idiom is:

```
with ensure_clean(path=None) as path:
     .....
```

rather than

```
try:
    ....
finally:
    os.remove(path)
```