Updates the TestTCPServer and adds UsherLock class

Forces TestTCPServer to use a separate process for running the server.
  - This ensures that the client(s) connecting won't conflict with the servers
    ability to lock and free correctly. No false positives.

Adds UsherLock
  - Essentially the bread and butter of the library
  - Has with-context
  - Handles retrys and blocking lock acquisition
  - Added some primitive blocking logic, could use more work for sure.