[WIP] SparseVector support + tests

Addresses #6479

Definitely not ready yet, but there's been some chatter, so I figured I'd push what I've been working on. I'm kind of adding to it here and there (since there's a lot to do), but if anyone else wants to help push this along, I'd appreciate the help.

Also a question, I'm not sure I quite understand the use of the two type parameters for `SparseMatrixCSC{Tv, Ti}`. `Tv` is obvious, but what does `Ti` really do as opposed to just using a consistent `Int32` or `Int64` vector. Is it really a space conservation option? I'm sure there's a good reason that I'm not aware of.
Seems strange to talk about the number of rows in a 1-d vector. I'd rename ``rowval`` to ``nzindex`` or something similarly generic.