ENG-4858: Atomically add new partition to ZooKeeper.

The LeaderAppointer's partition callback checks if the cluster is k-safe or not
whenever it's fired. Adding a new partition consists of two ZK operations,
adding the partition ZK dir and adding the replica node under the partition
dir. This is not atomic. The LeaderAppointer's partition callback could be
called between the two operations and crash the cluster thinking that the
partition is not k-safe.

Adding a state to the partition dir to indicate whether the partition has
finished initializing or not. If not, LeaderAppointer shouldn't perform k-safety
check on that partition. The first replica that adds itself under that partition
dir will also mark it as initialized.
Merge pull request #597 from VoltDB/ENG-4858

ENG-4858: Atomically add new partition to ZooKeeper.
performance charts: fix sql error
For ENG-4854, copy export data onto the heap to avoid issues with double free and use after free
performance charts: if present, display master first for each case
For ENG-4854, clarify memory ownership, once it is pushed it belongs to Java
ENG-4863: Cache the buffer used to load stream snapshot data on each site.

Each StreamSnapshotSink used to cache its own buffer used for load table. During
join, a single site can have multiple StreamSnapshotSinks, but only one of them
will be used to restore data at once. Cache the buffer at the site level so that
each site doesn't end up allocating more buffers than needed.
Merge pull request #601 from VoltDB/ENG-4854

Eng 4854 Fix crash in export buffer handling
Merge pull request #600 from VoltDB/ENG-4863

ENG-4863: Cache the buffer used to load stream snapshot data on each site
Consolidate sending and ack tracking threads used by StreamSnapshotDataTargets
to one per node.

The will only be one sending thread and one ack tracking thread per node for
stream snapshot. They share the same mailbox. All the StreamSnapshotDataTargets
will pass work to these two threads.
Consolidate StreamSnapshotSinks used during join to one per site.

Each sink will be receiving data from multiple sources.
Merge branch 'master' into stream-refactor

Resolved conflicts:
	src/frontend/org/voltdb/iv2/ElasticJoinProducer.java
	src/frontend/org/voltdb/rejoin/StreamSnapshotSink.java
Merge pull request #602 from VoltDB/stream-refactor

Consolidate threads used for stream snapshot during join
jenkins tool clone jobs: add endurance system tests to jobs cloned
ENG-4870: Only terminate sender and ack tracking threads when all stream
snapshot data targets are finished.

Some data targets may close earlier than the others. For those that close early,
they shouldn't terminate the global sender thread and the global ack tracking
thread. The thread should only be terminated after all data targets have
finished doing their works.
Merge pull request #603 from VoltDB/ENG-4870-stream

ENG-4870: Only terminate sender and ack tracking threads when all stream snapshot data targets are finished
ENG-4870: Add tests for StreamSnapshotDataTarget.

Also remove the mailbox at the end of the snapshot.
Merge pull request #604 from VoltDB/ENG-4870-stream

ENG-4870: Add tests for StreamSnapshotDataTarget.
ENG-4870: Fix TestRejoinEndToEnd.

Math for calculating header offsets were not changed accordingly after
reordering the metadata in rejoin data message.
ENG-4870: Don't terminate ack tracking thread if the thread was interrupted.