Get ye service list from stagecraft

This implements getting the services list from stagecraft (generating and returning this is work that is yet to be done). It also represents a significant factoring out of common api client logic and quite large test changes.

Notes:

- It is slower, seemingly adding about 300ms to request doing very basic local test. This will be better when stagecraft actually responds but it's problematic for now.
- Should we think about a switch to turn of the stagecraft request for local testing?

I have also made a couple of line comments to draw attention to issues I wasn't sure how to resolve. See below.
I'm not really sure what this file is either, but I'd be tempted to remove that comment and just not touch the file in this pull request.