Add support for recursive directory deletion to S3 client

This currently doesn't pass the tests, but that's because of problems with the mock S3 client, not the implementation. When a solution to #113 is found, we should be able to merge this, and then recursive copy/move should be pretty easy.