Attempt to improve scrolling speed

Scrolling was incredibly laggy on my Macbook, so I cached the images in
an NSCache - which will automatically get flushed when there’s low
memory.

The cache is populated on a background thread while the user scrolls,
and the grid view waits until scrolling has slowed or completely
stopped to update the images.

Note that it might need a bit of cleaning up. I’m a complete beginner
at Objective-C. Seems to work okay, though.
Merge pull request #1318 from shnud/master

Attempt to improve scrolling speed