Code formatting
Do not pass argument to factory, use function

Use a setter function instead of passing the data to the factory.
Clean up Components constructors

- Remove overloaded factory functions from GUI_Manager.
- Remove overloaded constructors that received additional parameters that can
  easily be set by calling a member function after the object has been
  created.
- Remove the init functions, which were only called only from the constructor.
  Move their code to the constructor.
- Use default implementation for destructor, where possible.
Rework FrameListener handling

- Remove struct FrameListener
- No element was ever added to FrameListener::getListenerRegistry().
  Therefore, remove this singleton completety.
- Use Util::Registry in GUI_Manager to manage the registered
  FrameListeners.
- Remove inheritance of FrameListener from Menu, make onFrame a static
  function in source file.
- Remove inheritance of FrameListener from TooltipHandler, make onFrame
  non-virtual.
- Make sure that the TooltipHandler in GUI_Manager is freed on
  destruction.
Remove ActionListener::getListenerRegistry()

It is unused: No element is ever added to the registry.
Move registry for KeyListener into GUI_Manager

- Replace KeyListener by registry in GUI_Manager
- Remove component parameter from KeyListener
Add HandleActionFun and use it in Button

This is a real improvement, because now lambda functions can be
specified directly.
Remove ActionListener, add Registry to GUI_Manager
Add HandleDataChangeFun and rework registry

Use a component based registry in GUI_Manager
Remove DataChangeListener, use registry
Replace MouseClickListener by function registry
Cancel the registration of the DataChange listener

when the component is destroyed
Change return type of onMouseButton to bool

Only LISTENER_EVENT_NOT_CONSUMED and LISTENER_EVENT_CONSUMED were
returned before. Therefore, I replaced it by false and true.
Furthermore, the logic removing the listener after the call was removed.
Add component-based registry for MouseButtons
Use MouseButtonListener registry in GUI_Manager
Remove Component-based MouseMotion listeners

Only Button used them. Change Button to use the global MouseMotion
events.
Replace MouseMotionListener by Util::Registry

in GUI_Manager using new HandleMouseMotionFun
Remove RegisteredListenerRegistry and listenerResult_t

- Use bool instead of listenerResult_t
- RegisteredListenerRegistry unused
- Update copyright
Move KeyListenerFun as HandleKeyFun to Listener.h
Move typedefs to Listener.h