- atomic file operations
+ `AtomicPath` ("r+", "w", "x", "a") -- doesn't actually open the file, just returns a temp path, and asserts that the destination exists or not and the temp file was created based on the mode, in the case of `a` and `r+`, the destination is copied to the temp file
+ `AtomicOpen` (any more supported by `open(...)`) -- wraps `AtomicPath` to return file objects like `open()`
+ cleans up the temp file if an error occurs, and if succeeds moves the temp file to the destination using atomic operations.
- improved `fmt_bytes_to_human`, better rounding of units
- added: `io_download`, to download files using `AtomicOpen`
- added: `basename_split_ext`, `basename_modify`, `path_basename_modify` to modify various attributes about the `<basename>` or `<name>.<ext>` of a path
- added: experimental proxy class