The engine informs now with which container a character is interacting.

The current interaction target of a character (e.g. a container) gets now
stored within a new CharacterComponent field called interactionTarget.

A new utility class CharacterUtil can be used to easly specify the current
interaction target of a character.

At the start of an interaction an InteractionStartEvent gets sent to
the target entity (e.g. the container).
Systems can listen to this event to open certain UI dialogs.
As the event is sent to the target, it is possible to filter for
interaction events of entities with certain components.
This event replaces the old OpenInventoryEvent.

At the end of an interaction an InteractionEndEvent gets sent.
Systems can listen to this event to close certain UI dialogs.
Abort interactions (e.g. accessing container) when distance becomes to large.
Remove accessor field from InventoryComponent.

Reasoning:
1. The field does not get used
2. The field didn't contain usefull values:
    -> The list got only extended but never reduced.
3. Via the interactionTarget field of the character,
    it is now also possible to check if a player is allowed to perform
    an access.
Shift click can now be used to transfer items to chests.
Make the container logic not depend on a specific UI method.

Reasoning: Preperation to make the container screen configurable via a new InventoryUIComponent.
Introduce InteractionScreenComponent.

The new InteractionScreen component can be added to entities to make them
open a custom dialog during interactions triggered by hotkey E.

This new concept gets now also used for chests.
Clear the interactionTarget field when an interaction dialog gets closed.

A module developer that usess the InteractionScreen component should not
need to know about the need to update the interactionTarget field
of the character.

This patch makes will make automatically opened interaction screens,
also automatically update the interactionTarget field when they get
closed.

For that purpose a new event is introduced called ScreenLayerClosedEvent
which gets sent to the client component when a screen layer gets closed.
Close the current interaction screen instantly when the user opens the inventory.
Close interaction screens instantly if the user presses E again.
Renamed CharacterUtil to InteractionUtil.

Reasoning: One of it's method has little to do with a charcter.
Move interaction related methods from CharacterSystem to InteractionSystem.
Moved interaction related classes into their own package.
Remove AccessInventoryAction to make module developers notice the new funcionallity.
Use replication to set the interactionTarget field on the client.
Fix some forgotten CharacterUtil -> InteractionsUtil renames.
Predict the activation on the client and send an event.
Play the activate sound instnatly, when an activation is predicted.
Predict also the activation of items.
Predict the start and end of interactions on the client side.
Don't cancel the new interation when a delayed interaction end is received.

This commit contains also some minor other changes like
javadoc and making InteractionEndEvent go to the owner only.