Logging of transactions is now performed on a separate thread instead of
the GUI thread to reduce latency - a latency which was somewhat
observable when making smaller changes, such as making smaller text
changes.

This implicated the need of grouping transactions into larger
transactions, such that smaller changes are performed, logically, at
once. For instance, moving or resizing components, where four different
properties are changed: X, Y, Width and Height. If not grouped together,
this implicited four refreshes of the GUI and thereby a latency four
times as necessary - which was observable.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>