Set correct structure when deleting by key path.

structure doesn't set correct new structure when deleting by key paths via `Cursor.remove(key)` or `Cursor.delete(key)`. Instead, value at key path gets set to undefined. This behaviour is corrected.
Set correct structure when modifying it during add, change, or delete events.
Better heuristic on detecting existence of key path.

This properly emit correct events such as updating the value at key path to a falsey value.
Flesh out tests.
Merge pull request #8 from Dashed/patch-handlePersisting

Patchs handlePersisting(), and sets correct structure during add, change, delete events.
Renames pathExists to hasIn and re-structures code
Bumps dependencies to latest (both dev and non-dev)