recovery download support for Downloader module

I spend some time to figure out how to implement the recovery download support to the Downloader module. And now I made it.
Please check my code to see if it's worthy to pull.

Of course, there are some situation still need us to figure out.
As an example, I just create a tempFile to store the incomplete book. so if a user continue to completely download the same book then it will be all right. but if the user abandon it. then the tempFile will left in the cache folder. So we need to find out a better way to make it.