On the one hand, this is pretty cool. On the other hand, I'm not sure the best argument for "look how far JavaScript has come" is to use it to do things that native code was doing 13 years ago. On the third hand, this has been around for like a year now. I'm fairly shocked that Nintendo hasn't come down on him yet for hosting commercial ROMs in this thing, they have a history of non-tolerance of these sorts of things.
The point isn't the code, it's the emulation of the hardware the code runs on. A processor, ram, display and sound are being emulated inside a browser by JavaScript, and we can use this to run a binary almost perfectly. That is what is amazing here, not the ability to play tetris!
Meanwhile, native code was emulating an NES at full speed on a 60Mhz Pentium 1 back in 1997. http://bloodlust.zophar.net/NESticle/nes.html Its nice that we can finally do in browsers what required assembly 14 years prior, but it's not exactly satisfying...
On the other hand, emulating a machine of this complexity was beyond imagination when gameboy came out. On the other hand, Virtualbox can emulate much more complicate machines. On the other hand, this one lives entirely and safely inside your browser.
Virtualization without extensions is possible, but tricky on x86. VMWare has historically used binary translation to deal with the tricky bits. (I.e. go through the binary before you run it, look for instructions that don't virtualize properly, replace them with sequences that can be virtualized and either do the same thing, or trap into the virtual machine monitor.)
This is probably an artifact of your keyboard. Most keyboards have sets of keys that can't be read in combination. For example, on the classic Model M, QWAS all pressed at once won't work properly (but asdf does.)
I can run multiple instances in parallel fullspeed on a shitty mac. If you don't have a GPU (or a blacklisted one), expect your browsers to run like shit.