Allow multiple App for a given location, identifying browser tabs by socket UUID

This meant moving some methods that only needed AppConfig to just load
the AppConfig rather than the whole App.

Some methods that now take an (appId, socketId) pair could just as well
take a socketId only, to be cleaned up later.

In theory we could share an SbtClient among browser tabs but just seems annoying.
When we have socket ID we don't need app ID, so just pass socket ID