In ERC-721, which function is used to safely transfer a token while checking that the recipient contract can handle ERC-721 tokens?