Improved crop functionality

The crop transformation currently supports four parameters:

* `x`
* `y`
* `width`
* `height`

It should also support a cropping mode, that could be set to the following values:

* `free`: Use the `x` and `y` parameters to specify the position of the upper left corner of the crop (default, and is the way the transformation works today).
* `center`: The transformation will disregard `x` and `y`, and place the crop in the center of the image.
* `center-x`: Center the crop on the x-axis, and use the `y` parameter to control the upper edge of the crop.
* `center-y`: Center the crop on the y-axis, and use the `x` parameter to control the left edge of the crop.