AMRules

Centralized & DistributedAMRules implementations.
HAMR learner includes a combiner processor to combine result streams from model aggregator and default rule learner.
@abifet do you think we should allow learners to return multiple streams?
It might be useful also for clustering, but the semantics are a bit fuzzy (it's just a list of stream, there is no meaning attached to it so evaluators need to understand the order of the list if streams returned)