The COIN, CPLEX, GLPK, and Gurobi backends supply a copy method.
But it's not documented as a backend interface method in GenericBackend, and the CVXOPT, PPL, InteractiveLP backends do not implement it.
It is used by MixedIntegerLinearProgram.__copy__.
The backend method should actually probably be called __copy__ as well -- see https://docs.python.org/2/library/copy.html
The branch on the ticket does this.
We also add __deepcopy__ methods to MixedIntegerLinearProgram and the backends.
This fixes #15159, though the semantics of copy and deepcopy of a MixedIntegerLinearProgram remains questionable due to its interaction with MIPVariable; see #15159 and #19523.
See also #20323 (in which copying a backend could be the basis for more diverse tests).
CC: @videlec @vbraun @dimpase
Component: numerical
Author: Matthias Koeppe
Branch/Commit: 3117b01
Reviewer: Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/20414