Changed sheduler to single thread
The old emulator was based on multiple threads, but this resulted in very poor performance because of the overhead when syncing. The new emulator uses the traditional technique, that the CPU advances the rest of the emulator components. This greatly improves performance.