Added interfaces and object model

Recommender and repository interfaces to program against have now been
added. Repository required the new object model implementation as well.