Change how shared memory is effectively destroyed
The shared memory is explicitly destroyed by `tao_shared_object_detach`. Handling of the `TAO_PERSISTENT` bit is done at the shared object level, not shared memory level. The same mechanism works for Linux and Mac-OSX. Another consequence is that TAO shared objects not properly detached will be persistent. This is useful for debugging. Use `ipcs` and `ipcrm -m` to list and remove such objects.