Base class for objects in Niagara that are owned by one object but are then passed for reading to other objects, potentially on other threads. This class allows us to know if the object is being used so we do not overwrite it and to ensure it's lifetime so we do not access freed data.