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.
:+1: