Generalize status printing and history saving in prox algorithms, with an eye toward
allowing the user to specify a callback function at some point in the future.
Add a basic PDHG (primal dual hybrid gradient) algorithm, which is related to linearized
ADMM. It is a work in progress as it stands, since it lacks niceties that help speed
convergence. I'm mostly committing this now so that I won't lose the details of PDHG
before putting on the finishing touches at some point in the future.

PDHG uses the dual prox for the second function G, so it is useful to implement
convex conjugates of the FunctionWithGradProx class. This makes it easy to get the dual
prox without using Moreau's identity, but also will allow evaluating things like the
dual function of the primal objective. This is not useful yet, but it is nice to have.