Updated thread to be simpler and add more syncs

Extended the sync objects to a common base with a common scope locking
function. Thread now removes silly idea of thread options for constantly
keeping thread alive. This caused exit conditions to become more complex
interactions for a simple thread object. Moved those implementations to
higher level objects if required.