Make Symmetric/Hermitian parametric on matrix type

With this change you can something like
```
julia> A=randn(5,5);A=A'A;

julia> B=Symmetric(sub(A, 1:4,1:4))
4x4 Symmetric{Float64,SubArray{Float64,2,Array{Float64,2},(UnitRange{Int64},UnitRange{Int64})}}:
  7.26709   3.63019   -3.51443   -2.25044
  3.63019   4.72902   -0.361715  -2.92745
 -3.51443  -0.361715   6.09191   -2.56832
 -2.25044  -2.92745   -2.56832    5.51021
```
and
```
julia> A=sprandn(5,5, 0.5);A=A'A;

julia> B=Symmetric(A)
5x5 Symmetric{Float64,SparseMatrixCSC{Float64,Int64}}:
 0.357118  0.0       0.0          0.0         0.0      
 0.0       3.68291   0.0          1.74181     0.0      
 0.0       0.0       0.591247    -0.00102322  0.0549353
 0.0       1.74181  -0.00102322   1.98844     0.670993 
 0.0       0.0       0.0549353    0.670993    0.394334 
```