rename item_object_ref -> internal_object_ref
object_base: add tes_uid method that will mark object publicly exposed (will cause object have prolonged lifetime)
autorelease queue now retains & releases object.

this also prevents from having rare issue when autorelease queue contains object added twice, deletes object, system re-uses identifier to create new object and second release deletes that new object
move writeToFile changes into separate branch. i'll introduce incompatibility later
restore backward compatibility, update tests