Translate most of Annotator to JavaScript

As discussed repeatedly on the mailing lists and in person, the general consensus has been that a pure-JS Annotator would be a Good Thing. Pros and cons of the switch:

CoffeeScript | JavaScript
------------ | -------------
Terser code | Better [static analysis/code quality tools](http://www.jshint.com/docs/)
Less noisy syntax | Better [documentation tools](http://usejsdoc.org/)
  | Better [code style checking tools](https://github.com/jscs-dev/node-jscs)
  | Much bigger community
  | Simplifies build/dev tools
  | Simplifies packaging

None of the reasons I originally switched to CoffeeScript (lack of decent automated JS code quality tools, difficulty of writing cross-browser JavaScript) remain valid. With that in mind, I kind of accidentally translated most of Annotator to JavaScript. It wasn't an awful lot of work.

My intent is that we merge this large chunk, and then progressively translate the rest of the code (including the tests) to JavaScript as we go along. Do shout if you have any objections.
Why `var isEmpty =` instead of just the named function definition? It seems like this whole file has this pattern.