rather than each backend storing this itself.
This allows many methods to assume that they are working on the current instance number rather than being passed the instance number
registering the compass via the compass backend method now infers setting the device ID
currently registering an MSP backend can't fail, so if we fail to register (e.g. out of slots) then we can end up overwriting other's data.
Add a probe method which can return nullptr on failure