Less allocation of SparseVec

This implements a pool of allocated vectors that we can reuse.  In my benchmarks it reduces the runtime by a factor of around 3. :-)