I decided to add these interfaces, instead of just building upon the User & UserData interface, as support for commerce between clans & users might be something that we want to add in the future in Clans.
This will allow for a FreedomLogger instance to be added to any collection of audiences.
This was written for usage in a future TransactionSpy implementation.
The new component-logging methods are ALL suffixed with "Component" to prevent type erasure conflicts with the other Supplier methods.
These methods were added for completeness for when I make the FreedomLogger an Audience.
This class is meant to track a global PlainTextComponentSerializer instance, so we don't have to call PlainTextComponentSerializer#plainText in every class that needs to serialize a Component into a String.
I implemented this so I can add component logging to FreedomLogger.
This class allows for ForwardingAudience-esque behaviour, while being mutable. It is currently not thread safe.
It was implemented as we need a good way to implement a "TransactionSpy" (or "EconomySpy", maybe) in the future, once we finalize planned administrative functions.