Extract iD.Difference

iD.Difference represents the difference between two graphs.
It knows how to calculate the set of entities that were
created, modified, or deleted, and also contains the logic
for recursively extending a difference to the complete set
of entities that will require a redraw, taking into account
child and parent relationships.

Additionally, all history mutators now return a difference.
Difference#extantIDs
Select result when splitting or joining ways

Fixes #601.
Fixes #603.
Dispatch a change event on merge
Hook up connection and history in context