Improve typing and style and fix some inconsistencies
@lhoestq Thanks for the quick review. I merged master to this branch to re-run the CI before merging :)
This PR:
* improves typing (mostly more consistent use of `typing.Optional`)
* `DatasetDict.cleanup_cache_files` now correctly returns a dict 
* replaces `dict()` with the corresponding literal
* uses `dict_to_copy.copy()` instead of `dict(dict_to_copy)` for shallow copying