Fuse.Elements: restore state when CompositEffects fail
Fuse.Elements: restore state when CompositEffects fail

A small detail from the stack-trace in fusetools/fuselibs#4211 is
that we seem to fail extra badly here, because of exception-unsafe
code.

Let's fix that part, as we can easily use try-finally for this.

There's no real changelog or docs needed here, as this just cleans
up the error-reporting when there's already something else gone
wrong; users shouldn't usually see this.

fusetools/fuselibs-public,fusetools/fuselibs-public,nekronos/fuselibs-public,Tapped/fuselibs-public,yupferris/fuselibs-public,kusma/fuselibs-public,Tapped/fuselibs-public,cbaggers/fuselibs-public,fusetools/fuselibs-public,eksperts/fuselibs-public,nekronos/fuselibs-public,nekronos/fuselibs-public,kusma/fuselibs-public,Tapped/fuselibs-public,fusetools/fuselibs-public,Tapped/fuselibs-public,cbaggers/fuselibs-public,eksperts/fuselibs-public,nekronos/fuselibs-public,fusetools/fuselibs-public,cbaggers/fuselibs-public,eksperts/fuselibs-public,yupferris/fuselibs-public,fusetools/fuselibs-public,cbaggers/fuselibs-public,nekronos/fuselibs-public,kusma/fuselibs-public,eksperts/fuselibs-public,Tapped/fuselibs-public,Tapped/fuselibs-public,cbaggers/fuselibs-public,eksperts/fuselibs-public,kusma/fuselibs-public,eksperts/fuselibs-public,kusma/fuselibs-public,cbaggers/fuselibs-public,yupferris/fuselibs-public,nekronos/fuselibs-public,yupferris/fuselibs-public,eksperts/fuselibs-public,yupferris/fuselibs-public,cbaggers/fuselibs-public,kusma/fuselibs-public,yupferris/fuselibs-public,yupferris/fuselibs-public,Tapped/fuselibs-public,fusetools/fuselibs-public,kusma/fuselibs-public,nekronos/fuselibs-public