Add a new context manager, Widget.hold_sync(), which holds any syncing until the manager exits



Sometimes for consistency or efficiency purposes, it makes sense to update
a group of properties all at once.  This context manager makes this possible.

We also fix a bug where send_state was not passing the key on to get_state.