WIP:feature/Implement basic SPI functionality
SPIDevice encapsulates the SPI master configuration used when transceiving data, whereas SPIBus handles reconfiguration and transfer functionality. Downside is that these two classes are tigthly coupled. SPI is currently set up in the blocking mode which means it actively waits until the transfer is complete.