Typo fix (in a comment)
Simplify _on_change handler
API improvements:

- `update` now takes a list of field names to update in one statement (in *args)
- updated params for `_memoize_fields`, `_on_change`, and all `on_change_*` handlers
Pass sets to `on_change_*` handlers, instead of tuples
Make sure on_change handlers always receive a (at least an empty) set for `updated_fields`