API changes: introducing selector descriptors

Now you can register your custom functions to create selectors
out of (any kind of) raw selectors.

Annotator's `onSuccessfulSelection()` function now expects to
find `segments` inside the passed event, instead of `targets`.
(This data is passed by the selection UI code.)

The creation of targets is no longer the responsibility of the
UI code which detected the selection; targets will automatically
be created my calling the registered selector descriptors on
the passed segments.

Also separated TextRange, TextPosition and TextQuote plugins
(which contains the corresponging selector descriptors)
from the TextAnchors plugin.
Merge pull request #55 from hypothesis/selector-creators-1

Introducing selector descriptors
Bugfix of list comprehensions.
Bugfix about class reference during initialization
Remove notification level after hiding. Fixes #200

    Not sure if hide() could ever be triggered without triggering show() first,
    but set the level default inside hide() just in case.
Use wicked-good-xpath library instead of xpath.js

The originally used xpath.js was not up-to-date and had problems when
executing the provided document.evaluate().

Wicked-good-xpath is a non-invasive up-to-date fast solution.

Changelog
annotator.coffee: removed one bit ugly hack to get the xpath.js library
instead of that: If wgxpath is present, just install it.
Installing the wgxpath does not hurt browsers which already have the
xpath functionality.

*.html: added wgxpath.install as a dependency instead of xpath.
Please note that IE 11+ no longer checks for conditional comments.
(So <!--[IE]> is no longer working) And also it is not needed because
wgxpath install is not invasive.

With this all the tests are successful under IE11 and both
the demo.html and dev.html are working too.

Conflicts:
	dev.html
	test/runner.html
Backport of Annotator#destroy()

Merge pull request #226 from okfn/feature/remove-annotator

Add a #destroy() method to Annotator

Conflicts:
	src/annotator.coffee
	src/class.coffee
Plugin dependency checks: don't throw exceptions, only warn
Improve error handling for anchoring strategies.
Avoid an error in the Range strategy when trying to create a TextPositionAnchor around a range with no content
Detect missing fields in TestPosition selectors.
Improve debug output
Update d-t-m to 271a373d (master branch)
TextPosition and TextQuote: Fix a bug on certain selections

Selections starting/ending at irrelevant DOM elements
(ie. DOM elements with no representation in the corpus)
could previous cause errors.

Now we are getting their positions correctly, too, using
the new APIs provided by d-t-m for this purpose.

Additionally, in the off-chance case when we somehow can't determine
positions, we avoid generating bogus TextPosition and TextQuote selectors.
Update d-t-m to 092979be (master branch), fixing PDF
PDF: add protection against a type of premature scanning
PDF: really fix the race condition during scanning
Move to current sourceMap reference syntax
Change DTM presence detection in dependant plugins

Earlier, several plugins used to check for the presence of the DTM
plugin at initialization time.

That test was not reliable, because plugin loading order is arbitrary,
(so maybe the plugin is going to be loaded later), furthermore, even
if the plugin is present, we can not be sure that the DTM document
access policy is actually used.

So now I have removed those tests at initialization time, and added
runtime tests, which look for availability actual methods instead.
DomTextMapper plugin: support the `skip` option