simplify unittest for critical region
improve critical regions

- use a fine grained mutex to negotiate critical regions
  and thread suspension

- we no longer have to suspend & resume a thread
  that is in a critical region
Thread.suspend must now be synchronous

So remove the comments about a possible different implementation
and actually check for sem_wait failure.
eagerly allocate Thread locks
exponentially increase wait time up to 10ms
enable docs for critical regions
Merge pull request #499 from dawgfoto/criticalRegion

improve critical region