Optimized BotcleanPartial that keeps track of previous dirty positions

Something is still wrong though because I lost a game. Need to find
the edge case to fix it.