Use PETSc LAPACK wrappers and data types (#4183)
Add named constructors, mixed product (#4183)