return result of highlighters.highlightSelection

The return value is an array of ranges which enclose the highlighted
content
add range-based highlighting API

Provide functions that can add and remove highlights from ranges of text
(as opposed to a user selection). The return values of these functions
(arrays of ranges) can be provided as inputs to each other.
add API documentation

for:
- highlighting functions
- util.dom.createAndAppendStyleElement
- util.ranges.removeCurrentSelection
update addListener() to respect object scope

When using addListener for objects that make use of `this` in prototype
methods, `this` will refer to the HTML element (instead of the desired
JS object). This is fixed by supplying the thisArg to the function that
executes the callback.
spike of in-place interface to submit selections

The basic interface gets out of the way of the user: provide 'bookends'
that enclose the range that could be submitted, but otherwise don't show
anything. On hover, identify that you can click on the selected content
to submit a new link.

Open issues:
- how to select content that is currently decorated
- use a different solution for :hover (because the hover only applies to
individual elements for a multi-piece range)
- submit the previous selection instead of relying on currentSelection()
- don't remove the selection after applying the 'prospectiveSubmission'
decoration
- create a loading animation
- allow Submissions.Result to cancel the loading animation
- choose a CSS style for the bookends
support double and triple clicks for submissions
send submission ranges on submit event
store the prospective submission for later send

When the user makes a prospective submission, store the result as an
array of ranges that can be submitted later. As part of this: use an
updated API that passes ranges around, instead of selection objects.

To handle multiple highlighters and multiple concurrent submissions
(possible with this UI approach), use an object-oriented approach so
that a Highlighter object maintains its state and cleans itself up when
no longer needed on the DOM.
Support selections that intersect a highlight

Save & restore user selections so that they can be recovered after a
change to the DOM
add functions to bookend ranges w/ custom element

These utility functions use the core internal Range API to add custom
elements to the DOM to enclose each range in a selection.
use Range API for creating highlight bookends

Instead of manually attempting to keep track of the highlight bookends
(and keeping them consistent as ranges are modified), use the core Range
API to adjust the ranges and add our custom elements.
add private function for getElementsByClassName

getElementsByClassName is available in most versions of modern browsers,
but not in IE8 or below. This private implementation fills in the
behavior for all other browsers. Performance will vary based on
available browser features.
apply hover CSS to all submission elements

When hovering over any part of a prospective submission, apply the hover
CSS to all related elements.

Also: use one class to identify the element is part of the submission.
Another to identify that the elements are being hovered over (to apply
new CSS).
hide bookend styles

For now, don't let bad styles get in the way of testing/launching. The
bookends are "nice to have" anyways.
remove unneeded dependency

Util.Ranges is not referenced in submissions.results.js
convert identifier to string at creation

There was a problem with IE7 comparing the numeric identifier and string
element attribute. Always treating the identifier as a string solves the
problem.
clean up function documentation

Included:
- event logic for 'debouncing' mouseup and click events
- processes for managing classes and attributes on highlighter elements
- interaction between submissions.interface and submissions.result