After a bit of experimenting I realized what the problem is with
`previewImage`. It's specifically an issue with `DevIL` as `DevIL`
essentially maintains a pool of images that it will write to files, but
I could find no way (with the minimalist port to Haskell) of forcing it
to write the file before doing anything else, so xv kept complaining
that it disappeared. I also was returning the fileHandle and path, which
really made no sense. (I could tell this was the problem as if I
manually wrote the image and opened it it was fine (bar floating point
infidelities which I am sure will haunt me).)

I also moved my example into its own project so I can run it more quickly.