Added item based CF, refactored out similarity functions into their own Engine abstract class