Project adjoint solutions with proper constraints

Previously if anyone tried to use an adjoint solution after a system
reinit() they'd have found it to have been corrupted by any *primal*
Dirichlet BCs.  Since correctly projected adjoint solutions might be
useful (if only as an initial guess for the fine grid adjoint solve),
let's make sure they get the correct adjoint BCs.

I'm not done testing this yet but I do hope to merge shortly if everything works.