ENG-4621: Snapshot code refactoring for elastic

This pull request include multiple changes for non-blocking elastic join.

- Allow specifying different table stream types in SnapshotSiteProcessor.

- Integrate with the capability of undoing tuple deletion during table streaming.

- Refactored table streaming code into an individual class.