Context manager to wrap actions in proper user-action signals
This class used for the TextBuffer.user_action attribute
This allows syntax like:
with buffer.user_action:
buffer.insert(...)
instead off:
buffer.begin_user_action()
buffer.insert(...)
buffer.end_user_action()
By wrapping actions in this "user-action" block the UndoStackManager will see it as a single action and make it undo-able in a single step.