fix(NodeAttrs): lazy init of observer listeners
style(events): code cleanup
chore(CONTRIBUTING): explain how to squash and copyedit

- Explain how to squash multiple commits.
- Copyedit.

Closes #740