Add a determinism test for the elastic hashinator.
Method name correction in HashRangeExpression.
ENG-4455: Add getRanges() to ElasticHashinator to get the ranges a partition
covers on the ring.
ENG-4455: Allow adding partitions with calculated tokens to an existing elastic
hash ring and return a new config.
Allow configuring the number of tokens per partition for the elastic hashinator
via Java system property ELASTIC_TOKENS_PER_PARTITION.
ENG-4455: Add a method to get the predecessor of a given (partition, token) pair
on the elastic hash ring.
Unthrow the umpossible CloneNotSupportedException from the
AbstractExpression.clone() method.
ENG-4455: Add SnapshotRequestConfig and its descendant to consolidate snapshot
request configuration de/serialization.
ENG-4455: Add predicate and deleteTuple boolean to the SnapshotTableTask.
ENG-4455: Widen the ExecutionEngine.activateTableStream() signature to take the
predicate bytes.
ENG-4455: Serialize predicate and delete tuple boolean and pass it down to the
EE when activating snapshot.
ENG-4455: Build predicate to filter tuples based on the snapshot request config
in StreamSnapshotWritePlan.
ENG-4455: Use the SnapshotRequestConfig class to serialize snapshot request
configuration into JSON.
ENG-4455: Do not create hashinator update tasks  if there is no partitions to
add in stream snapshot planning. This is the case for normal rejoin.
ENG-4455: Refactor the nested loop polling elastic join data block from multiple
sources for readability.
ENG-4455: Encapsulate snapshot predicates serialization in a helper class per
Steve's review.
ENG-4455: Change list of tables to snapshot to an array of tables per Steve's
comment, since all the callers expect a table array.
ENG-4455: Throw exceptions instead of returning null for the umpossible cases in
ElasticHashinator.predecessor.
Merge pull request #477 from VoltDB/ENG-4455

ENG-4455: Integrate stream snapshot with tuple filtering and removal