ENG-4806: Grow snapshot buffer pool size based on task count.

With stream snapshot coalescing for join, 5 snapshot buffers may not be
enough. Grow the pool size if needed on snapshot initiation and empty the pool
at the end of the snapshot. So for an idle site, it won't use up the memory for
unused snapshot buffers.
Remove m_isIV2Enabled from SnapshotSiteProcessor since it's always true.
ENG-4806: Clean snapshot buffer pool after targets are terminated.

Has to wait until all data targets are terminated before cleaning the buffer
pool, otherwise some buffers could still be in use by the data targets.
ENG-4806: Return listenable future in StreamSnapshotDataTarget.write().

SnapshotSiteProcessor uses the returned future to determine if the buffers are
properly sent. Not returning a future for real work would result in the
SnapshotSiteProcessor clearing out buffer pool prematurely at the end of the
snapshot on a site.
ENG-4806: Properly notify listener of sent work in StreamSnapshotDataTarget.

The future has to be set after both the schema and the message are sent, not
just after the schema.
ENG-4806: Cleanup snapshot buffer pool in the terminator thread.

Also removed unused parameter from doSnapshotWork().

Each site creates a cleanup task at the end of its snapshot work and puts it on
the snapshot completion task queue. The tasks will be run on a seperate thread
when the last site finishes the snapshot.
ENG-4806: Removed redundant snapshot task queue code left from previous commit.
Merge pull request #569 from VoltDB/ENG-4806

ENG-4806: Dynamically grow snapshot buffer pool