Merge pull request #10 from domwong/master

Bug in Lock() method causing it to wait indefinitely
Race condition in watcher methods can cause receive call on nil channels