Streaming & find_each for Accounts CSV generation

The accounts download was taking an long time and large
amount of memory to generate.  This helps, but it's still
running 4 sql queries per account row.  We'll have to start
employing counter_cache or something similar to gain more efficiency.

This extracts the existing CSV streaming code from doc_hits into
a "deliver_csv" method.  We should consider further extracting that
into a mixin if additional controllers need it in the future.
Use Tempfile for zipfile creation

When Dir.mktmpdir is unlinked, the inner files are inaccessible to send_file.
This meant that we had to keep it around until after the download was complete,
which littered the /tmp directory with directories filled with zip files.

Since we only need a single file, Tempfile is more appropriate.  We can close
the filehandle and any process that is currently reading from it (like send_file)
can continue to read even after the file is unlinked when the tempfile is
garbage collected.

A future enhancement might be to switch to the Zipline gem.  That would allow
streaming the zip file while files are being added to it, allowing downloading
to begin sooner.
Merge pull request #3 from documentcloud/master

A couple of commits