Implement recursive transfers

This patchset enables recursive transfers and enables files of
size 0 to be created on the remote side.