Refactor XO::Evaluator, update its tests and document the code