Remove locks where possible
Created by: agraubert
Work code to rely on the internal GIL to assure data integrity wherever possible. There are likely going to be a few times where locks and conditions are still required, but for the most part, many of the locks are used only to notify threads, and should be replaced with Events.