Refactors server to use semaphore table in lieu of dictionary

- Adds some low level socket tests to verify application assumptions.
- Adds NamespaceSemaphore class to replace the locking table.
  - Has self-releasing greenlets
  - Semaphore provides granular control and server-side priority waiting.
- Adds server-side blocking *untested* to client implementation
- Extends the acquire message to include server-side timeout value
- Adds test for semaphores