In the Client, DataSetting.setThing() is deeply suspicious
Summary: It's side-effecty; worse, InputGadget.thingId
usually relies on it. It's a nasty code smell, and I've already encountered serious bugs caused by it. We should instead be rigorously setting data-thing
explicitly when needed.
This is going to be a pain in the ass to fix. The first step is probably going to be changing InputGadget to not use thingId, and throw a clear exception instead, but that's going to cause a fair amount of havoc, and require a lot of testing and fixing.