Using a list is just a hair quicker.
Fix typos, and reflow for better diffs.
Extraneous
Python 3 compatibility
Support empty strings.

If an empty string is provided, annotations may still be added, but must start and end at 0.
Add compiled js version for easy including remotely.