Change `retry_exp`'s closure to return `RCopyResult<()>`

This allows `try!` to be used in a lot of places. I also changed a few things to use method chaining instead of `match`.