Made ThreadManager an interface to be able to interpose a DebugThreadManager
Added an Interrupt() method to the Interpreter class.
This method stops the execution of the Execute() method by setting a branching address to a specific memory location. Not entirely sure about the thread-safety of it, this will probably need some serious testing.
Bug fixes in NativeThreadManager
Using lock_guards instead of unique_locks; fixed an Enter/ExitCriticalSection bug where the incorrect parameter would be passed to thread_suspend/resume
Added a default stack size to the stack preparator class
Fixed an issue with the execution marker that caused it to basically not work
Created an InvalidInstructionException to replace the Panic calls in the interpreter
Added actual execution support to the debug stub.
A new thread manager class has been created for it, and synchronization happens through consumer-producer queues. This is all still very experimental, but it's now as functional as it was before adding execution support (which means it crashes lldb).