perform scanning in a worker, fixes #7

This will fix #7 and moves all scanning into a worker `scanworker.js`:
I had to change rules.js so that it doesn't require ScanJS to be loaded in the same scope (it's in the worker now!). We might want to solve this differently, if you guys don't like the current workaround.

I hope this request doesn't break pull request #42, otherwise I can happily rebase either.