Convergence flags in linear solvers

This implements a getter in the linear solver classes (LinearSolver::get_converged_reason()) which returns a flag indicating the convergence status of the solver.

The flags are inspired by PETSc's, and gathered in an enum which aims at being generic in the future, defined in include/enums/enum_convergence_flags.h

The LinearSolver::print_converged_reason() method is updated to make use of this new enum in conjunction with Utility::enum_to_string().

PETSc is the only backend for which the getter is currently implemented (in the other solvers libmesh_not_implemented() is called).