[BusTemplate] New implementation for SPI & I2C peripherals drivers
Rewrite BusTemplate to make it more user-friendly and extendable Core requirements:
- Bus parameters configurable on-the-go (CPOL, CPHA, baud, etc..)
- Allow mock buses to unit test drivers
- Increase code testability
- Increase readability and ease-of-use