Multithreaded searching using web workers!

Searches are done asynchronously in the main thread using Ajax requests, but result processing is launched in a new thread using a web worker.

Parsers are no longer Ember objects but simple functions. They must be capable of running both under the restrictions of the Web Worker environment, but also called from the main thread when web workers are not available.

I managed to get Wicked Good XPath working in a web worker thread, but I could not get a compatible DOM implementation working, so I decided to switch to Cheerio instead. This is a Node project, so I ran it through browserified ("browserify index.js --standalone cheerio > cheerio.browserified.js" in the root of Cheerio) to get a version that runs in the browser. I had to manually patch this bug in Cheerio as well: https://github.com/cheeriojs/cheerio/issues/549

Because of the switch to Cheerio all parsers were rewritten from XPath to jQuery selector expressions. This is probably a good thing, as it's more readable and I expect more JavaScript developers are familiar with this syntax.