feat(notifier): add proof of concept for custom notification

The templating engine wants to use a consistent mechanism for databinding throughout its internal
implementation. To enable this we need a way to register for changes in certain HTML elements,
rather than using dirty checking to observe them. This is a proof of concept for one way that might
be plugged in.

Closes #35
feat(observer): enable a general mechanism for plugging in custom field observers

We need a mechanism for handling different types of object/field observation. The first prototype
was geared towards handling certain types of bindings to HTML elements. This is the improved
implementation which can handle that scenario as well as O.o and any custom change notification
system.

Inteternally, explicit observer related modes for the dirty checker are use so that we can noop when
no event is raised. Interaction tests included for ObserverSelector and Observer interaction.
refactor(change_detection): remove abstractions intended for multiple implementations

The new observer feature gives us a better model for plugging in custom methods of watching fields.
The original detector abstraction turned out to be incorrect. This commit removes the now
unnecessary abstractions which were originally intended as an extensibility point.
refactor(watch_group): merge DCCDGroup and WatchGroup

Now that the new observer functionality has been added, we no longer need a strict separation
between watch groups and dirty checking groups. This commit merges those two together.
refactor(all): remove unneeded getters/setters and obsolete code

Remove unneeded getters/setters.
Remove old dccdgroup code.
Remove unneeded code from watch record.
Improving code paragraphing.
Fixing linting errors.
style(*): remove trailing whitespace