Add specs for SnapshotDiffCluster

I decided to add some basic tests to this model to improve our spec
coverage. At the same time I added some guards for edge cases if the
image height happens to be 0.

There may also be an off-by-1 error in #relative_start, but I'll let
@trotzig chime in since he has more context in this particular area of
the code. And even if there is an off-by-1 error, it is unlikely to
actually matter that much since we only use this to generate the top
position of the diff cluster, which may actually benefit from this error
anyway. In any case, however, it would be good to at least make that
behavior explicit.

Change-Id: I2b95ac6ed927dffea6ce0d2e4870c73138b83a0c