Add Recommender (DO NOT MERGE)

This involved some refactoring off the SPI/SDK name mappings to get it good. That's now beautifully simple to use. I want to test it locally against Missito before merging it down, but this is open for comments (specifically on the recommender class).