Re-implement nearest-neighbor interpolation

Fix for issue 295, there was, what amounts to an off by one error in the
original code, which was causing the problem in issue 295.

This error was probably not very noticable in larger images, but as
pointed out by the bug report smaller images may contain more distortion
than necessary.

Wasn't entirely sure how to correct the original code, so replaced it with
entirely new code.

Also added unit test for resize methods, however the bilinear test only
checks using RGB, and not the other ImageTrait types.
Add RotSprite algorithm for PixelsMovement (issue 121)

* Added app::RotationAlgorithm enum.
* Added app::ISelectionSettings::get/setRotationAlgorithm.
* Added app::SelectionSettingsObserver::onSetRotationAlgorithm.
* Added raster::image_rotsprite() function.
* Added ContextBar::RotAlgorithmField class to select the rotation algorithm.
* Now the mask isn't updated constantly on PixelsMovement::moveImage8),
  in this way when the user release the mouse button is when we recalculate
  the mask (to get better performance when the user is scaling/rotating
  the image).
Merge pull request #11 from DocHoncho/issue-295-dev

Re-implement nearest-neighbor interpolation