SNESFAS: added tau-corrected grid continuation.

This just means exact upsweep solves.
Merge branch 'stefano_zampini/pcbddc-reusebddc' into stefano_zampini/pcbddc-multilevel-improvement
PCBDDC: fix for new reuse logic in the multilevel case
PCBDDC: replace SetXXXBoundaries with SetXXXBoundariesLocal (better logic)
PCBDDC: provide API for setting Dirichlet/Neumann boundaries in global ordering
PCBDDC: provide API for global to local translation (more general than ISGlobalToLocal and memory scalable)
PCBDDC: provide APIs for setting field split in global ordering

previous API moved to PCBDDCSetDofsSplittingLocal

For consistency with updated man pages, which_dof values should default to -1;
this way, unlisted nodes in field split will belong to a different subset
PCBDDC: document API change
Merge branch 'stefano_zampini/pcbddc-globalordering-api' into stefano_zampini/pcbddc-multilevel-improvement

Conflicts:
	src/ksp/pc/impls/bddc/bddc.c
	src/ksp/pc/impls/bddc/bddcprivate.c
PCBDDC: set compute topography to true also when Local version of the boundaries API is invoked
PCBDDC: set compute topography to true with new field split
PCBDDC: coarse matrix is structurally symmetric
PCBDDC: propagate field split and neumann boundaries to coarse problem
PCBDDC: added initial implementation of PCApplyTranspose_BDDC
PCBDDC: rename private PCBDDCSolveSaddlePoint to a more explicative PCBDDCSolveSubstructureCorrection
PCBDDC: simplify PCBDDCApplyInterfacePreconditioner

coarse_psi_* now always exist. For symmetric problems, they point to the same object of coarse_phi_*
PCBDDC: added second parameter to PCBDDCApplyInterfacePreconditioner to determine if the interface preconditioner should be applied tranposed or not

The main reason for this is to avoid code duplication
PCBDDC: added support for solving the transposed of the substructure correction

rhs, solution and work vectors for the correction are now parameters of the function
PCBDDC: remove unneded guards

these guards were needed in the previous version of the code when PCBDDC coarse problem was handling through the enum PCBDDCCoarseProblemType
PCBDDC: support for PCApplyTranspose completed by solving the transpose of the coarse operator in PCBDDCApplyInterfacePreconditioner.

Function pointer is now set during object creation