Add full(F::Factorization) for various kinds of factorization

This PR generalizes `full(::Cholesky)` to various other factorizations: `CholeskyPivoted`, `QR`, `QRCompactWY`, `QRPivoted`, `Eigen`, `Hessenberg`, `Schur`, `SVD`, `LDLt`, and `LU`.  The idea is that `A = full(F::Factorization)` is the opposite of `F = factorize(A)`.  I implemented the reconstruction for all factorizations, apart from `bkfact`---somehow the `.ipiv` encoding is too hard to understand for me, see http://www.nag.com/numeric/FL/nagdoc_fl22/pdf/F07/f07mdf.pdf , section 5.5. 

The patch includes code, tests and a line of documention.
You should also use parentheses here because it avoid an expect transpose. See
```julia
julia> A = randn(1000, 1000);As = schurfact(A);

julia> @time As.Z*As.T*As.Z';
elapsed time: 0.16407385 seconds (22 MB allocated, 74.51% gc time in 2 pauses with 0 full sweep)

julia> @time (As.Z*As.T)*As.Z';
elapsed time: 0.121135898 seconds (15 MB allocated, 69.94% gc time in 1 pauses with 0 full sweep)
```
The reason is that, without the parentheses, the expression is parsed as `*(A,B,transpose(C))` and with the parentheses it is `A_mul_Bc(*(A,B),C)`.