Added software SPI and some cleanup

BDub, I did a bit of cleanup and added the software SPI.  Because of the large number of files, I decided to not use #defines for the hard vs soft SPI setup.  Instead, I use an internal flag and call a common SPI transfer function.  Take a look and let me know what you think.  :)

BTW, I posted the performance I measured on the microSD topic.