Use simplejson if possible, otherwise fall back to json.py, which older systems seem more likely to have
Optional debug support, to track requests and responses
GeoNames supports the same arguments multiple times, eg featureClass=["P","T"] -> featureClass=P&featureClass=T - Switch from a dict to array so that urllib will send that
Check for the geonames error status, and raise as an error if found, so our caller knows what they did wrong