Merge #122 122: Create 'drivers' singleton r=torfmaster a=torfmaster # Overview The drivers as well as the hardware represented by the drivers is only available once. To prevent hacing multiple mutable references to this global mutable state we do the following: * collect all drivers in a `drivers` object which is a singleton * ~if a driver allows to create a mutable reference to a part (e.g. an led) mutably borrow the driver as whole~ # Progress The following drivers have been migrated: [x] Timer [x] Led [x] Console [x] GPIO [x] Temperature [x] Buttons [x] ADC [x] RNG [x] BLE [x] ninedof # Help needed As this PR concerns API design comments are welcome! Moreover, the initialization of the `Hardware` struct is very verbose. However, initialization using a `Default` implementation is not desired as this would make the individual drivers constructible outside the trate which is unsafe. Any ideas are very welcome. Co-authored-by: torfmaster <briefe@kebes.de>