use webworkers

- greatly improves usability of the interface.
- complicates code a bit, but the comments should be helpful.
- refactored the scripts into their own files, served statically out of ./js

No passing by reference was done which could be helpful for performance reasons,
although most likely the diff algorithm itself is the bottleneck.