Detailed description 
I have an application that requires some creative subsetting of sparse matrices to return other sparse matrices.
Example:
```
> m < new("dgCMatrix", i = c(2L, 0L, 1L, 2L, 0L, 1L), p = c(0L, 1L, 2L, 4L, 4L, 6L), Dim = c(3L, 5L), Dimnames = list(NULL, NULL), x = c(2, 1, 2, 1, 2, 1), factors = list())
> m
3 x 5 sparse Matrix of class "dgCMatrix"
[1,] . 1 . . 2
[2,] . . 2 . 1
[3,] 2 . 1 . .
> m[1, 1]
[1] 0
> m[1:2, 1:2]
Error in m[1:2, 1:2] : invalid or notyetimplemented 'Matrix' subsetting
```
I have a few workarounds in place, one of which is to go through R's base::matrix
```
> Matrix(as.matrix(m)[1:2, 1:2])
2 x 2 sparse Matrix of class "dtCMatrix"
[1,] . 1
[2,] . .
```
However, some of my matrices are too big and have too many 0s to do this. My other workaround is to just create a new dgCMatrix with the proper dimensions, selecting the right elements from the i, p, and x slots.
Furthermore, and I believe this to be the same bug, very large sparse matrices don't even attempt to print to print to the screen; I think this is because R is trying to curtail the object to the first number of elements corresponding to the user's options("max.print")
System Info:
R 3.6.1
Matrix 1.217
Running on Ubuntu 18.04.03, Linux 5.0.032generic, on Intel Core i52520M

