client: fix invalid iterator dereference in Client::trim_caps()

trimming inode drops a reference to the inode's parent, it may cause
the inode's parent also be trimmed. If the cap iterator 'p' happens to
point to the inode's parent and the inode's parent is trimmed, the cap
iterator 'p' become invalid.

Fix the issue by delaying removing cap from the seesion cap list.
(similar to what the kclient does)

Fixes #6599
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Merge pull request #749 from ceph/wip-6599

client: fix invalid iterator dereference in Client::trim_caps()

Backport: emperor, dumpling, cuttlefish
Reviewed-by: Sage Weil <sage@inktank.com>