Made Debug.CheckArgType() returns an error when the provided argument is a destroyed game object (even when debug is not enabled)
Ray.Cast() and Ray.IntersectsGameObject() don't work on destroyed game objects any more
Prevented GameObject.GetWithTag() to return destroyed game object and made it sanitize GameObject.Tags
GameObject.Destroy() now remove the tags on all the descandants of the game object too.