HAL Classes Are No Templates
This MR restructures the inheritance tree such that hardware abstraction classes are no templates anymore. All relevant templating happens in the base CaribouDevice
class (dynamic interface allocation and access, selection of HAL board)
This should only be reviewed after !61 (merged) has been merged to reduce complexity. :)
(cc) @afiergol