Add ability to block by acquiring and releasing a unique token
Use a lock file rather than a named mutex

Making named mutexes work in mono requires enabling shared memory
which is not an ideal solution.
Various improvements based on review feedback
Merge pull request #122 from andrew-polk/BL475_BlockOnToken

Add ability to block by acquiring and releasing a unique token (BL-475)