Automata Minimization: a Functorial Approach (Logical Methods in Computer Science, 2020)