Initial sync operations (local -> hdfs -> local)

@markhibberd @raronson @charleso 
I would split this up, not sure of best way, but you probably want `SyncIngest`, `SyncExtract`, whith just the top level methods for the two phases. And then a `SyncHdfs` or similar that does the raw hdfs ops. Not sure of best structure, but it needs to be tidied up a bit from here.