Text this: Block triangular preconditioners for PDE constrained optimization