use C++ header forms, and include cstdlib needed for free(3) on RasPi
get rid of size_t warning on 32-bit
add warning when SPI missing, fix some missing structure contexts
named initialization is a C99 feature not present in C++
avoid more warnings
add headers needed for actual SPI usage