After some considerable work we now have an Emscripten build as well as a NaCl build. Originally I tried using Pepper.js which seemed like a quicker port as we could just reused the exact same pepper API calls but sadly its missing plenty of mappings to needed API calls and I had to switch to a native Emscripten build to get things working.
Not too hard to achieve but it took a few days of fighting APIs and building annoying wrapper code so we can treat everything the same. It's a real shame we cant do proper threads under Emscripten as I can see that causing future problems even if I have been avoiding threads so far. Still the number of CPU cores is only going to increase and this is going to be a real problem for future JS based performance.
The order of engine preference is pNaCl under Google Chrome then asm.js under Firefox, if it works well in any other browser then it's a miracle... So far I've had no luck with it working under Android but maybe it will on some other devices.
So Google Chrome (not Chromium as it may have NaCl disabled) is still recommended but no longer required.