Change recommender interface to enable using table instead of storage
Add nearest_neighbor_recommender.

This change only implement nearest_neighbor_recommender within driver.
User still cannot use it via server.
Make recommender_factory able to generate nearest_neighbor_recommender
Merge remote branch 'origin/feature/nearest_neighbor_recommender_and_lof' into feature/nearest_neighbor_and_push_mixer
get and update clock implemented