Completed distributed downloads

This PR completes distributed downloads more or less. A few more things will be added. I'll create issues for these, in the order of increasing importance:
* Perhaps a diagram to explain how the actors work
* Optimize for clusters with unique public IPs for each slave node
* More intelligent job distribution - if we have multiple workers running on each node, the current system may end up sending multiple big jobs to one node and small jobs to another (if we have skewed download file sizes, say when the user wants to download pages-articles.xml.bz2 files and NOT part files). Also, even if we have one worker per node, Master should divide jobs keeping in mind how many bytes were downloaded by each worker. A sort of **fair distribution** among workers.
* Clean up logging, log download progress in terms of percentages, how much done, how much left. The infrastructure is there, just need to polish up the crude list of messages and compute percentages. :)

I tested this with one master and 2 workers using three machines at my home. Not tested on GCE yet, will need to refactor the spark gce cluster setup script for that. @sangv I'll let you know after I add more documentation and a README so that it's easy for you to test it out.