Use arrays instead of HashMaps in sparse matrices.

Summary of changes:
- Switched sparse-matrix data structure to array of AVectors instead of HashMap of AVectors.
- Rearranged SparseRowMatrix.java and SparseColumnMatrix.java for future refactoring.
- Added unit tests for SparseRowMatrix.java and SparseColumnMatrix.java


Main performance improvements ("Multiply with dense matrix" is the line to look at):

1.  original code; edited output of test/java/example/SparseMatrix.java with CSIZE changed to 200
Construct sparse matrix: 642ms
Construct dense matrix: 2663ms
Multiply with dense matrix: 77823ms

2.  new code; edited output of test/java/example/SparseMatrix.java with CSIZE changed to 200
Construct sparse matrix: 711ms
Construct dense matrix: 157ms
Multiply with dense matrix: 9420ms