Update urrlib.request.urlopen monkeypatching
The function urllib.request.urlopen() can accept either a URL
string or a urllib.request.Request instance. It seems that
astropy.utils.data sometimes uses the latter, so our monkeypatch
code needs to be able to handle that case.