Begin work to enable lastmodified/latest behavior

This generalizes the http_get method so that options such as headers can
be passed, and the get method does not itself overwrite a target file.
Add some comments, fix a bug
Set the mtime of the file after downloading

If the last-modified header exists, make sure the file is saved with
that mtime. This is in preparation for using the last-modified and mtime
to perform a simple "latest?" check.
Provide ability for http to use get, head

And other preparatory steps for performing a last-modified check
Fix latest implementation
Add additional comments to each provider method

To help clarify the logic, add a mostly-standard format header to each
method in the provider.