Integrate incremental push

This is the last part of #46.  Thus, it actually fixes #46.

It depends on #658.  Review that first.

This change takes the two pieces built previously, ability to discover what snapshots exist remotely and ability to generate incremental data streams given information about remote snapshots and ties them together with the push implementation.  It makes push retrieve the snapshots and feed them into the data stream generator.

Doesn't mention `None` as default argument. Might be simpler to just have input be an ordered iterable and then you can have tuple as default and remove a code branch.