Make (c)transpose work correctly for block matrices

With this change, the matrix `Apd` generated by
```
julia> A=[randn(2,2) for i = 1:2,j=1:2]
2x2 Array{Array{Float64,2},2}:
 2x2 Array{Float64,2}:
 0.779435  -0.145332
 2.06874   -1.24279   …  2x2 Array{Float64,2}:
 0.036242  0.40966 
 0.584986  0.122122
 2x2 Array{Float64,2}:
  0.471302  0.577977
 -1.77892   0.216775     2x2 Array{Float64,2}:
 -1.17572  0.296942
  1.41572  0.535884

julia> Apd = A'A;
```
will be positive definite.