Fix a settings saving crash observed in the wild

* If the SerializedValue we are given comes up null when saving
  a string then save out an empty string instead of crashing.
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.
Merge pull request #121 from andrew-polk/master

Correct PalasoUIWindowsForms.Tests.csproj to have 2-space tabs
Merge pull request #120 from sillsdev/FixSettingsCrash

Fix a settings saving crash observed in the wild
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)