coordination: remove destroy() from the lock protocol

This is remove the need to manually destroy the lock, especially in the
IPC driver. It's very complicated to know when we can destroy a lock, so
what we do is that we destroy it when releasing, and make the rest of
the code solid so it handles lock being destroyed under its feet.

Change-Id: I67eab4e403b0d3194cf8b082a3059ef4536c3988
Merge "coordination: remove destroy() from the lock protocol"