Trigger change events only once + Trigger change event for parent keys

Two separate commits.

1) Trigger change events only once.
Nice feature. There are no opened pull requests like this at current moment.

2) Trigger change event for parent keys.
There are already opened pull requests like this one at current moment, but my has tests.
While this feature may not be suitable for everyone, personally I found it extremely useful.

All tests pass with source file and with distribution.