Re-compare with same snapshot as before

When you hit the "Re-compare" button on the snapshot page, we used to
compare the snapshot against the current baseline and not the baseline
that was at the time of first comparison. This was confusing, and led to
situations where hitting that button would remove the old diff and
either replace it with a diff to some other snapshot, or with no new
diff at all, since we only compare snapshots with a baseline if the
baseline is older than the snapshot.

I've fixed this by caching the compared_with snapshot and reusing that
when re-comparing. I'm aware of the fact that the snapshot_diff model
already stores this information, but we wipe out that reference when
re-comparing, and I would have had to make larger structural changes in
order to use that information.
Prevent comparer to trigger when re-taking snapshot

This fixes a bug where the comparer worker was triggered immediately
when you hit the "Re-take snapshot" button. The worker would error out
quickly because the snapshot image was no longer available. The fix was
to add a check for the image being there before triggering the comparer.
This was more complicated than I first though, mostly due to how the
paperclip gem handles attachment deletions.

I though that `snapshot.image = nil` would result in `snapshot.image ==
nil`, but no, `snapshot.image` returns a non-nil value even after that.
However, you can check for the existence of `snapshot.image_file_name`
instead.