fix URL structure and spurious duplication of endpoints in service catalog

Code which manipulates service_id is currently kind of nonsense; it doesn't know what the service_id identifies, and this confusion results in looping over each endpoint in places where we should be looping only over each API plugin.

Fix it so that the unique IDs identify plugin instances, rather than trying to identify endpoint objects which might differ between tenants.  URIs should still line up between the null tenant and real tenants unless the `IAPIMock` plugin is doing something weird though, since the structure is `/service/<unique-id>/region/...`.