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
Remove unused
Pass just the projection to Circularize
Remove redundant conditional
Use iD.actions.DeleteNode when removing nodes

They need to be removed from any parent relations.
Also, make sure to uniq child nodes, otherwise the
start/end node over-contributes to the centroid
calculation.

This action needs tests.
Fix hash with selected id
Simplify
Don't snap to midpoints, snap to their parent way
Merge remote branch 'upstream/master'
Tidy up: fix indents, spaces etc. Update orthogonalize to match new
circularize.
Add orthoganalize to test index.html