Fix Geocoder to use updated URL and throws an error unless key is specif...

...ied as it is now required. 

 This update uses the new URL of api.geonames.org as ws.geonames.org is being depricated. Also the previous version was using ws.geonames.net (instead of .org). 

 Since Geonames now requires the use of a registered key to use, I changed it to throw an error if a key is not set.
Explicit non-nil checks are usually redundant.