tests for base recommender

* enforce naming convention in BaseRecommender.save()
fix to precision computation
fix for --mb_per_task option
try to set validation set size and iters automatically

* use metrics.prec() and not local implementation
fix handling of mb_per_task and improve default behaviour
use scipy standard error, add unit tests for metrics
tidy up warp parameter handling, simplify client code
x
update docs
Merge branch 'develop'