Methods for QR-like factorizations with more arguments

Add methods for QR-like factorizations that take all the arguments that will be stored in a factorization.  With these a factorization can be updated in place.

These are now the most basic methods for the generic.  The methods that take only the matrix to be decomposed now call these after allocating vectors or matrices.

@andreasnoackjensen has suggested going further and storing the `work`, `iwork` etc. arrays in the factorization so that an update can be performed without any allocation of storage.