Unit tests

I switched the unit tests to use fluent assertions, which makes more readable code, but mainly allows to justify the tests with a simple english sentence: `x.Should().Be(y, "because x should be y")` 

I noticed that the image modification comparison didn't actually do anything (it basically tested that the images were two different objects), so I refactored it to do an actual image data comparison based on the `byte[]` data. I found it to work, for now, even though I guess it's still not ideal.

In order to improve slightly the tests performances, I refactored to load the ImageFactories only once, and not at each test. It does not improve much, but it's better than nothing. Unfortunately, the coverage doesn't run much faster.

Note that, due to the (now) actual image testing, the "apply background color" test does not pass anymore, since for most images, the resulting image is identical to the source. I'll have to test only certain images (transparent PNGs) for this test, instead of the regular bunch.