Stupidly big commit (again). Finished initial pass of downloading logic. Still rough edges in various places. Disk reading + writing has been mocked to go to file.