Decouple connection_dir_request_failed() from directory_initiate_command_rend()

Instead of calling connection_dir_request_failed() directly, directory_initiate_command_rend() should mark the failed connection and have it cleaned up later. This would prevent recursive invocation of directory_initiate_command_rend(), and remove 12 functions from the Blob.

I'd do this right now, but I want to test that the code actually does the right thing.