Merge pull request #740 from BrianBland/ng-push-pull

WIP: Adds push/pull client functionality
Adds sliding-window parallelization to Push/Pull operations

A layer can only be pushed/pulled if the layer preceeding it by the
length of the push/pull window has been sucessfully pushed.

An error returned from pushing or pulling any layer will cause the full
operation to be aborted.