* don't try to fetch newly created childnodes from the remote server
* a modified way with new childnodes will safely merge, but will
return the same graph (no diff), so check conflicts.length instead
* working Previous/Next buttons
* remove behaviors from save mode
(users should not be moving nodes around or selecting at this point)
* clear hover before hovering next object
* enable save button and finished message after reviewing last conflict
* store users choice in __data__.chosen..
* default choices to `keep remote version`
* better message for delete conflicts
* fix undelete action to check localGraph (which will have the entity)
instead of context.graph() (which may not)
This means
* no more weird saves to localStoage of partially merged graphs
* pop cleanly cancels back to history state before merges happen
(removed the annotated undo states)
filling the toCheck list from summary() means that moved vertices are
treated as a change to the parent way, instead of changes to each node
TODO: need to conflict check each node, but at least now they are
fetched with a single API call to fetch the way, and can be reported
as a single conflict in the ui..
(instead of dispatching `load` event to merge them into `history`)
This is cleaner becuase now `context` doesn't need to keep an
`altGraph` state used only for Conflict Resolution.
The conflict resolution code calls the `iD.Connection` methods directly,
and other places in the code call `loadEntity` and `loadTiles` wrappers
that merge the entities into the main history.
This prevents it from being undefined when exiting back to browse mode:
in selectElements() (re 2024e233 crash if element id passed in url hash)
in update() (possible re #2151?)
* store entity's matched features in a graph transient
* replace fn calls to get commonly used _keys and _hidden arrays
* replace lodash calls with faster for loops (in some places)
* always pass graph/resolver as a param