Merge branch 'master' into develop
Add basic `light_mgr` class (WIP)
This class inherits from `abstract_singleton` and handle
all possible light states of the light.

Conflicts:
	se2p_2_3/src/lib/timer/timer_wrapper.hpp
More work on `light_mgr`
Aligned pictures, fixed some typos and pagecount in RDD.
Removed pagenumber.
Add `EVENT_ENTRANCE_R`
also adapted dispatcher unit test.
Add values for Festo 4
Remove hackfix for transition from conveyor 1(WIP)
Updated RDD : Repository concept, Requirements, Systemtest
Remove hackfix for transfer to conveyor 2
This should fully remove the hackfix (untested)
Finaly fix transition without hackfix (FSM1)
Remove old comments (FSM2)
Move some registration to other states
This should make a bit more sense... (FSM2)
Implement `light_mgr`
The `light_mgr` should have full functionality. This has to be tested on the real hardware.
Fix some glichtes with the switch on conveyor 1
Also added a todo for an wrong handled error case...
Add `dispatcher::register_prior_listener()`, `dispatcher::unregister_prior_listener()`
These functions allows to register a listener to a event, but with higher priority
than the other listeners. There can be only one preferred listener per event.
Normal registred listeners wont get event calls while a preferred listener is registered.
This should fix a bug with token which needs to be turned over at the end of conveyor 1.
The cause is, that while turning the token over, the token triggers `EVENT_SENSOR_EXIT_R`
and `EVENT_SENSOR_EXIT`. The token behind the token which need to be turned already listen
on the event `EVENT_SENSOR_EXIT` and leave the queue too early.
Update FSM 2 to not use the hal directly
This replaces the direct `hwaccess::open_switch()`, `hwaccess::close_switch()`
calls with `token_mgr::request_open_switch()` and `token_mgr::unrequest_open_switch()`.
Improve E-Stop handling
Delete `state::dispatched_event_button_e_stop()` and
`state::dispatched_event_button_e_stop_rising` implementation.
This is now handled in `dispatcher::special_case_handling(...)`,
that allows to eliminate some functions in `token_mgr`. The eliminated
functions are `reregister_e_stop()` and `reregister_e_stop_rising()`.
Remove `m_e_stop_listener` from `token_mgr`
This is a leftover from the previous commit. Also further
improved E-Stop handling. While `token_mgr::m_safe_state` is `true`,
`update()` doesnt do something. If `update()` gets called while in
safe state, `m_update_req` is set to `true`. When the system leaves
its safe state and `m_update_req` is `true`, then `update()` gets
called once.
Add `token::add_timer_id()`
This function allows to add timer ids to an internal vector.
When the token gets resettet, all timers of this token will
be deleted.