Speed - split HW/SW SPI

Experiment with splitting Hardware SPI from Software SPI into two
different classes, such that in the HW class you can streamline several
of the methods to be inline for speed.