Mock out HTTP requests in data tests

This uses [`vcrpy`](https://github.com/kevin1024/vcrpy) to mock out HTTP requests as YAML files in test fixtures. To regenerate cached HTML, delete the relevant YAML file, re-run the tests (with a network connection), and then commit the changes.

The tests can now be run without a network connection.

This involved some refactoring to isolate the network calls, so that they could be mocked inside the tests. `vcrpy` does not do universal monkeypatching on `requests` or `urllib`, so the request call has to be made inside the vcr block. I think the general modularization of parsing from downloading is good for the scraper, though I don't think passing in optional arguments like I am is the ideal solution. Nonetheless, I think it's the most effective way of getting this done without extensive refactoring.

Fixes https://github.com/18F/foia-hub/issues/371.
We're still using it, which is why I didn't delete the lines above. But it's valuable to be able to run a specific test file, *and* to run it without the `nosetests` wrapper. `nosetests` apparently suppresses all kinds of warnings and debug output, which now prints out when running with `python` directly. I fixed a couple of those in this PR, by closing file handles, but there are a few others that are more inscrutable (though they do not look like active bugs, just deprecation notices caused by our dependencies).