Full keypath observers

Makes `Rivets.KeypathObserver` an all-encompasing interface for keypaths. It handles unresolvable keypaths without error (returns undefined), but still observes the intermediary keys and is notified when the keypath is resolvable again (returns the actual value of the end property).

Closes #233