fix to correctly identify system special key

* fixes issue #4086 . earlier the query interpretation/parsing was failing in service_apis_map()
* this was caused by self.services(query) returning empty list of "available services"
  - it expected str only, but got unicode in query.get('system', None)
  - solution: use basestring instead of str