public CellValue? Winner(IDictionary<BoardPosition, BoardCell> cells, out IEnumerable<BoardPosition> positions)
{
var winning = Enum.GetValues(typeof(CellValue)).Cast<CellValue>()
.Select(value => WinningPositions(cells, value))
.SingleOrDefault(tuple => tuple != null);
positions = winning != null
? new[] { winning.Item1, winning.Item2, winning.Item3 }
: null;
return winning != null