QR decompostion

julia> t = Tensor(rand(2,2,2,2), [:i,:j,:k,:l]);
julia> q, r = tensor_qr_thin( t; inds_q = Index.([:i, :k]), inds_r = Index.([:j, :l]), ind_virtual = Index(:x) );
julia> q2×2×4 Tensor{Float64, 3, Array{Float64, 3}}: [:, :, 1] = -0.668873 -0.153963 -0.647854 -0.33044 [:, :, 2] = 0.27999 0.775449 -0.204135 -0.527838 [:, :, 3] = 0.270886 -0.549341 0.235716 -0.754509 [:, :, 4] = 0.633116 -0.270553 -0.69502 0.207155
julia> r4×2×2 Tensor{Float64, 3, Array{Float64, 3}}: [:, :, 1] = -1.21742 -0.982754 0.0 0.51828 0.0 0.0 0.0 0.0 [:, :, 2] = -0.984218 -0.597685 -0.179305 0.135688 -0.427365 -0.726178 0.0 0.055193