[MLlib]Vectors.sparse() add support to unsorted indices

For original method, when the indices is not strictly increasing, the sparse vector can be created without any warning or error. But when use apply() method, only zero will be returned.
This is non-trivial overhead to introduce every time a vector is made, when the common case is that the indices are sorted, and the other cases are really caller error. I'd still suggest merely checking the sorting. There are lots of one-liners but this may be among the most efficient `require((1 until indices.length).forall(i => indices(i-1) <= indices(i)))`