move Service specific cleanup from ::release() to destructor
Service overloads the release() function to do additional cleanup in case the reference count reaches zero, just before deleting itself. This patch moves the cleanup into the destructor instead.