delegator: split Delegator into Evented and Delegator

Delegator handles a bunch of common setup for objects bound to a specific DOM
node, but it's useful to have around a class that implements just .publish() and
.subscribe() without all the extra baggage.

Split out the basic event handling functionality into Evented, and clean up the
Delegator tests a bit as well.
registry: Add a Registry object for annotations

In order to make custom Store plugins feasible, a lot of the work currently
performed by the Store plugin needs to move back into Annotator itself. The
Registry object is the part of Annotator that will look after communication with
a simplified Store plugin. It will have responsibility for sanity checking store
responses, and ensuring a common interface between other parts of Annotator and
the store.
Add new initialisation to dev.html
registry: preserve annotation object identity across requests

Previously, updating references to annotation objects was a laborious task that
needed to be done manually. With a registry to take care of this task,
annotation objects themselves can be preserved across remote requests, so that
anyone who has a reference to an annotation, has that reference for all time.

Also, deduplicate management of the annotations in the registry.
core: Pull annotation registry tasks out of Annotator

This commit starts the work of extricating the job of tracking annotation
storage state from Annotator core. The Store plugin is dramatically simplified,
leaving all the event publishing to the Registry, and large chunks of Annotator
core itself can be removed.

This breaks large chunks of the Store and Annotator specs -- I'll fix that in a
future commit =).
Specify store to use for tests

Use annotator store plugin in annotator_spec, thus revealing real test failures.
Add NullStore to aid with testing and debugging
Clean up Annotator and Store plugin tests

Major structural changes to the core Annotator object and its
relationship with the store plugin have broken a lot of (fragile and
delicately coupled) tests. I've been quite aggressive in removing tests
that cross what I consider to be unit boundaries, or which probe the
implementation rather than the interface of the unit they are supposed
to be testing. In particular, the Store plugin test suite looks much
more sensible now.
Clean up Viewer and plugin tests

Many plugins expected DOM events to be used for the transport of (e.g.)
'beforeAnnotationCreated' events. This was fixed to use Delegator custom
events.

A number of plugins instantiated an Annotator with a default Store
plugin. These have been updated to use the NullStore.

Various other fixes.

And a passing test suite :)