Small speedup by parallelizing image sorting.
Change datetime display.

Rather than formatting an image's dates to their string representations
before handing them to the formatting functions that turn the image into
HTML, do the formatting as-needed in those functions.

Add some new formats & printers to the `mars-ogler.times` namespace, as
required by the image formatting functions.
Replace maps with Image record.

Create an Image record for MSL images, and use this instead of maps to
represent the MSL images in the sorted and indexed image atoms.

When saving the images, stream them to the cache file one-by-one, rather
than marshalling them all into a giant string and spitting that to the
file. Also, save one image record on each line, rather than having all
the images in one, tens-of-megabytes-long line.

When reading the images from the cache file, if the cache file seems
like it's in the new format (one Image record per line), read the Images
one-by-one instead of turning the entire cache file into one enormous
string and calling read-string on that.

Taken together, all of these changes reduce the maximum memory usage of
the app by nearly 60% (with 174k images, it goes from needing
around 850MB of heap to needing around 350MB).
Add some GC tuning flags
Reduce default heap size