Reworking handling of active instances to enable unsynchronized instance lifetimes.
Removed functions for declaring new instances and for setting instance stealing logic, added functions for user-code to discover oldest or newest active instance. Fixed various bugs in new signal-side id_map scheme, though tracking map status is still buggy.
Update testinstance for new instance management approach.
Fixed bugs setting id_map release flags, memory freeing when freeing device, pointer bug.
Renamed instance id record to index to better reflect its usage; fixed potential overflow bug in msig_reserve_instances().
Fixed flag arguments calling msig_get_instance_with_local_id(), leaning up TODOs.
Revert to freeing signals first in mdev_free, but make sure not to reference freed signal when freeing connections.
Free link_signals if corresponding input/output signal has been removed from device.
Use automatic instance stealing, but keep explicit user-code release of receiver-side instances. Instance management handler registered with the IN_OVERFLOW flag will take precedence over instance allocation mode.
Add instance management callback to python bindings.
Call instance management handler (if defined) when upstream release messages are processed by the instance handler.
Added timetag to instance management handler parameters.
Added timetag to instance management handler parameters (Python bindings).
Use real timetags throughout; added timetag argument to instance_get functions in case instance stealing results.
Connections should default to using instances if either endpoint signal has multiple instances.
Use maps with zero remote refcount (might be new map)).
Fixed segfault when removing connections.
Remove bitflags for obsolete instance properties.
Added function for getting signal allocation mode.
Fix send_as_instance property on new connections.