Updated SPI peripheral to be polymorephic, more documentation, hopefully much easier to use.