Harden KVO by using selectors instead of strings.

This way, refactoring is less dangerous. Also properly use NULL for context.
Add note and todo.