Add ability to block by acquiring and releasing a unique token

Worth saying (if known) that it seems to be working in WeSay, giving some hope that it is indeed a sound implementation, at least provided the same compiled code (or at least the same version of Mono) are used by all clients.