Inventory and generic interactions

This patch series makes it very easy to create new dialog based interactions with blocks. It also converts the existing chest access to the new system. 

All interactions based on the new system will have the following features:
* If the interaction target has an inventory, shift click can be used to transfer items.
* When you move out of interaction range, the interaction stops and the open interaction screen closes
* The interaction hotkey E can be used to stop interacting. This also closes a dialog if there is one.
* Opening the inventory with hotkey I, will also abort the interaction.

Modules that added new chests that use the old mechanism need to perform the following adjustment to their entities:
```diff
-  "AccessInventoryAction": {},
+  "interactionScreen": {
+    "screen" = "engine:containerScreen"
+  },
```
The InteractionScreen behavior will show the specified dialog when the user starts interacting with it. Without any further system implementation the interaction features listed above will apply: So it's possible to add new dialogs without implementing any event processing system!

For more details please have a look at the commit messages, which often have more than one line.
If a setter should be used, wouldn't it be better to make this a getter/setter pair backed by a private field? Or does that interfere with serialization?