Applies transformations correctly to copy/pasted sources when copy and
pasting multiple. Previously the transformation/crop state was stored in
a single variable on copy so it would only apply the transformations to
one of the selected sources on paste instead of what the state was when
copied.
Implements the Undo/Redo for scenes and sources, ranging from renaming,
deletion, addition. It also adds several elements to libobs that were
designed to facilitate undo/redo, and should not affect the rest of
libobs.
(This commit also modifies UI)
Changes groups to their own independent type, "group". This allows them
to be used like other regular types, and allows the ability to reference
groups in multiple scenes. Before, a group would always be linked to
the scene it was in. This made it cumbersome for users to modify groups
if they had a similar group in multiple scenes (they would have to
modify each group in each scene). Making groups like other source types
makes more sense to solve this issue so they can be referenced in
multiple scenes at once. This also removes a significant amount of
group-specific handling code required for implementing groups in the
front-end.
One limitation however: due to the way sub-items of groups are
seamlessly modifiable and sortable as part of the whole scene, the user
cannot have multiple references to the same group within one scene.