Avoid null deref for null watchers in ProcessWatcher
Fix serverAddrs randomization; avoid probs with IPV6 addresses

Linq's *.OrderBy(...) does not order in-place, so the serverAddrs
collection was not actually being randomized.

Also, ran into issues with Dns.GetHostEntry(...) returning IPV6 variants
of localhost which were then being considered invalid during connect
attempts.  Preemptively filtering these out in the
ResolveHostToIpAddresses(..) helper method.
InterProcessLock + Mutex based on apache curator implementation

A port of apache curator's InterProcessLock / Mutex classes with the
minimal amount of helper code.
Merge pull request #13 from tausten/trunk

Port of InterProcessLock / Mutex classes from apache curator.  Also, avoid null deref in ProcessWatcher, fix serverAddrs randomization, and avoid problems with IPV6 addesses.