Various refactorings regarding PR 881 comments

Hi @timlinux, here is the summary of this PR:
- I added FileDownloader class and its test
- I deleted download_url from safe_qgis.utiliities.utilities (this function is only used by OSM downloader)
- I deleted download_url test from test_osm_downloader (basically moving this to FileDownloader test)
- OSM Downloader is now directly using FileDownloader class instead of download_url to download file
- Implemented size() and read() properly, so no need to use self._size
- Named finished variable on FileDownloader class as finished_flag