Reworked fits.open() - Fixes #3041

Following the discussions on #3041 - The following changes are made:

1. ```urlretrieve``` was previously used for downloading files from remote machines, this has been replaced by using ```astropy.utils.data``` package which provides a good caching mechanism and better way to deal with downloading files.
2. ```fits.open(url,cached=False)``` can be used to disable caching when downloading from remote machines, and by default the caching mechanism is enabled.

This PR also fixes #3122 - as an already existing method is now used from ```astropy.utils.data``` to check if given filename is url or not.