Fixed issue where SparseVector can allocate more than "size" space

Fixed issue where SparseVector can allocate more than "size" space in its underlying arrays because it was always allocating to a power of 2.

Simply enforce the maximum size when computing the new size.