Fixed grammar and Threading.Thread.Sleep() bug

Emulation thread now uses BackgroundWorker arguments to set how long the
thread should sleep between each cycle.
Various bug fixes

Fixed grammar in comments, made Emulation BackgroundWorker use arguments
instead of accidentally crossing threads, added code to stop
BackgroundWorkers on close, and added error message for invalid opcodes.